diff --git a/ARCs/arc-0054.md b/ARCs/arc-0054.md index adf37ab66..842cced70 100644 --- a/ARCs/arc-0054.md +++ b/ARCs/arc-0054.md @@ -13,6 +13,7 @@ sub-category: Application created: 2023-09-15 adoption-summary: adoption/arc-0054.yaml extended-by: + - 62 - 89 --- diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index fc102d191..e294c0c83 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -20,6 +20,7 @@ requires: - 2 - 4 - 22 + - 54 extended-by: - 89 --- @@ -27,8 +28,8 @@ extended-by: ## Abstract This ARC introduces a standard for the definition of circulating supply for Algorand -Standard Assets (ASA) and its client-side retrieval. A reference implementation is -suggested. +Standard Assets (ASA) and its client-side retrieval. A reference implementation for +a _singleton_ application is suggested. ## Motivation @@ -108,9 +109,13 @@ App_ in this specification): The `arc62_get_circulating_supply` **MUST** be a _read-only_ ([ARC-22](./arc-0022.md)) method (getter). +### Burned Supply definition + +The _burned supply_ definition **MUST** comply with [ARC-54](./arc-0054.md#definitions-related-to-token-supply--burning). + ### Usage -Getter calls **SHOULD** be _simulated_. +Getter calls by off-chain clients **SHOULD** be _simulated_. Any external resources used by the implementation **SHOULD** be discovered and auto-populated by the simulated getter call. @@ -133,7 +138,7 @@ auto-populated by the simulated getter call. > ``` > > In this case the simulated read-only method call would auto-populate 1 external -> reference for the ASA and 3 external reference accounts (Reserve, Burned and Locked). +> reference for the ASA and 3 external reference accounts (Reserve, Burned, and Locked). #### Example 2 @@ -162,10 +167,13 @@ An ASA conforming to this ARC **MUST** specify the Circulating Supply App ID. > the metadata of an ASA. Instead, it only extends already existing standards. If the ASA also conforms to any ARC that supports additional `properties` ([ARC-3](./arc-0003.md), -[ARC-19](./arc-0019.md), etc.) as metadata declared in the ASA URL field, +[ARC-89](./arc-0089.md), etc.) as metadata declared in the ASA URL field, then it **MUST** include a `arc-62` key and set the corresponding value to a map, including the ID of the Circulating Supply App as a value for the key `application-id`. +It is **RECOMMENDED** to use the [ARC-89](./arc-0089.md) ASA Metadata Registry to +declare support for this ARC and to discover the Circulating Supply App. + #### Example: ARC-3 Property ```json @@ -205,24 +213,52 @@ method for that ASA. ## Backwards Compatibility -Existing ASA willing to conform to this ARC **MUST** specify the Circulating Supply -App ID as [ARC-2](./arc-0002.md) `AssetConfig` transaction note field, as follows: +Existing ASA willing to conform to this ARC **MUST** publish an [ARC-2](./arc-0002.md) message, +to either: -- The `` **MUST** be equal to `62`; -- The **RECOMMENDED** `` are MsgPack -(`m`) or JSON (`j`); -- The `` **MUST** specify `application-id` equal to the Circulating Supply -App ID. +- (**RECOMMENDED**) Point clients to the [ASA metadata](#asa-circulating-supply-app-id-on-asa-metadata-registry) +on the ASA Metadata Registry, or +- (**NOT RECOMMENDED**) Provide the ASA Circulating Supply App ID [directly](#asa-circulating-supply-app-id-in-arc-2-note-field). + +As described in the subsections below. + +Clients discover the [ARC-2](./arc-0002.md) message inspecting the ASA `AssetConfig` +transaction history. + +Clients **SHOULD** optimistically check ASA metadata existence on the ASA Metadata +Registry first, to avoid inspecting the transaction history. > **WARNING**: To preserve the existing ASA RBAC (e.g. Manager Address, Freeze Address, > etc.) it is necessary to **include all the existing role addresses** in the `AssetConfig`. > Not doing so would irreversibly disable the RBAC roles! -### Example - JSON without version +### ASA Circulating Supply App ID on ASA Metadata Registry -```text -arc62:j{"application-id":123} -``` +This is the **RECOMMENDED** option to specify the Circulating Supply App ID for an +existing ASA. + +The ASA metadata **MUST** comply with the [ASA Circulating Supply discovery](#circulating-supply-application-discovery). + +For further details, refer to the ASA Metadata Registry [backward compatibility +guidelines](./arc-0089.md#backwards-compatibility). + +### ASA Circulating Supply App ID in [ARC-2](./arc-0002.md) Note Field + +This option to specify the Circulating Supply App ID for an existing ASA is **NOT +RECOMMENDED**, and was provided _before_ the availability of the ASA Metadata Registry +(**RECOMMENDED**). + +- The `` **MUST** be equal to `62`; +- The **RECOMMENDED** `` are MsgPack +(`m`) or JSON (`j`); +- The `` **MUST** specify `application-id` equal to the Circulating Supply +App ID. + +> Example: JSON without a version +> +> ```text +> arc62:j{"application-id":123} +> ``` ## Reference Implementation @@ -230,7 +266,18 @@ arc62:j{"application-id":123} This section suggests a reference implementation of the Circulating Supply App. -An Algorand-Python example is [available](../assets/arc-0062). +A [reference implementation](https://github.com/algorandfoundation/arc62) of a _singleton_ +ASA Circulating Supply App is maintained by the Algorand Foundation. + +The trusted deployments of the _singleton_ ASA Circulating Supply App are: + +| NETWORK | GENESIS HASH (`base64`) | APP ID | CREATOR ADDRESS | +|:---------|:----------------------------------------------:|:-----------:|:-------------------------------------------------------------| +| Main Net | `wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=` | `TBD` | `XODGWLOMKUPTGL3ZV53H3GZZWMCTJVQ5B2BZICFD3STSLA2LPSH6V6RW3I` | +| Test Net | `SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=` | `755427327` | `Q3ROBYOB5QODCSNZKDYLH33NO5V4FN3YKMOHE43RPPC2LUPG56DNSU446I` | + +> Refer to the [ARC-56](./arc-0056.md) Application Specification of the [singleton +> reference implementation](https://github.com/algorandfoundation/arc62/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc56.json). ### Recommendations @@ -240,113 +287,85 @@ to the Circulating Supply App Account. A reference implementation **SHOULD** target a version of the AVM that supports foreign resources pooling (version 9 or greater). -A reference implementation **SHOULD** use 3 external addresses, in addition to the -Reserve Address, to define the not circulating supply. +### Singleton Circulating Supply App -> ⚠️The specification _is not limited_ to 3 external addresses. The implementations -> **MAY** extend the non-circulating labels using more addresses, global storage, -> box storage, etc. +The _singleton_ reference implementation stores the ASA circulating supply configuration +in a `CirculatingSupplyConfig` struct in box. -The **RECOMMENDED** labels for not-circulating balances are: `burned`, `locked` -and `generic`. +#### Init Configuration -> To change the labels of not circulating addresses is sufficient to rename the -> following constants just in `smart_contracts/circulating_supply/config.py`: -> -> ```python -> NOT_CIRCULATING_LABEL_1: Final[str] = "burned" -> NOT_CIRCULATING_LABEL_2: Final[str] = "locked" -> NOT_CIRCULATING_LABEL_3: Final[str] = "generic" -> ``` -> +To create the `CirculatingSupplyConfig` struct for an ASA: -### State Schema +- The authorization **MUST** be restricted to the ASA Manager Address; -A reference implementation **SHOULD** allocate, at least, the following Global State -variables: +- The `CirculatingSupplyConfig` struct **MUST NOT** exist for the ASA; -- `asset_id` as UInt64, initialized to `0` and set **only once** by the ASA Manager -Address; -- Not circulating address 1 (`burned`) as Bytes, initialized to the Global `Zero Address` - and set by the ASA Manager Address; -- Not circulating address 2 (`locked`) as Bytes, initialized to the Global `Zero Address` -and set by the ASA Manager Address; -- Not circulating address 3 (`generic`) as Bytes, initialized to the Global `Zero Address` -and set by the ASA Manager Address. +- The `CirculatingSupplyConfig` struct MBR **MUST** be provided contextually. -A reference implementation **SHOULD** enforce that, upon setting `burned`, `locked` -and `generic` addresses, the latter already opted-in the `asset_id`. +The addresses of `CirculatingSupplyConfig` struct **MUST** be initialized to the +`ZeroAddress`. -```json -"state": { - "global": { - "num_byte_slices": 3, - "num_uints": 1 - }, - "local": { - "num_byte_slices": 0, - "num_uints": 0 - } -}, -"schema": { - "global": { - "declared": { - "asset_id": { - "type": "uint64", - "key": "asset_id" - }, - "not_circulating_label_1": { - "type": "bytes", - "key": "burned" - }, - "not_circulating_label_2": { - "type": "bytes", - "key": "locked" - }, - "not_circulating_label_3": { - "type": "bytes", - "key": "generic" - } - }, - "reserved": {} - }, - "local": { - "declared": {}, - "reserved": {} - } -}, -``` +The `CirculatingSupplyConfig` struct MBR **MUST** be returned. + +> This method can be simulated to discover the `CirculatingSupplyConfig` struct MBR. + +#### Set Not Circulating Addresses + +To set a not-circulating `address` for an ASA: + +- The authorization **MUST** be restricted to the ASA Manager Address; + +- The `CirculatingSupplyConfig` struct **MUST** exist for the ASA; + +- The not-circulating label **MUST** be one of: + - `burned`, + - `custom_1`, + - `custom_2`, + - `custom_3`, + - `custom_4`. + +- The not-circulating `address` **MUST** be opted in to ASA. + +If the not-circulating label is `burned`: + +- The ASA **MUST NOT** have a Clawback Address, and + +- The address **MUST** be assigned to the [ARC-54 ASA Burning App](./arc-0054.md#deployments). + +The `address` **MUST** be set in the `CirculatingSupplyConfig` struct. + +#### Delete Configuration + +To delete the `CirculatingSupplyConfig` struct for an ASA: + +- The `CirculatingSupplyConfig` struct **MUST** exist for the ASA; + +- If the ASA still _exists_: + + - The authorization **MUST** be restricted to the ASA Manager Address. -### Circulating Supply Getter +The `CirculatingSupplyConfig` struct **MUST** be deleted. -A reference implementation **SHOULD** enforce that the `asset_id` Global Variable -is equal to the `asset_id` argument of the `arc62_get_circulating_supply` getter -method. +The `CirculatingSupplyConfig` struct MBR **MUST** be returned contextually to the +caller. -> Alternatively the reference implementation could ignore the `asset_id` argument -> and use directly the `asset_id` Global Variable. +#### Get Circulating Supply -A reference implementation **SHOULD** return the ASA _circulating supply_ as: +The _singleton_ reference implementation returns the ASA _circulating supply_ as: ```text -circulating_supply = total - reserve_balance - burned_balance - locked_balance - generic_balance +circulating_supply = total - reserve_balance - burned_balance - custom_balances (1 ... 4) ``` Where: - `total` is the total supply of the ASA (`asset_id`); - `reserve_balance` is the ASA balance hold by the Reserve Address or `0` if the -address is set to the Global `ZeroAddress` or not opted-in `asset_id`; +address is set to the Global `ZeroAddress`, not opted-in `asset_id`, or the ASA does not exist; - `burned_balance` is the ASA balance hold by the Burned Address or `0` if the address -is set to the Global `ZeroAddress` or is not opted-in `asset_id`; -- `locked_balance` is the ASA balance hold by the Locked Address or `0` if the address -is set to the Global `ZeroAddress` or not opted-in `asset_id`; -- `generic_balance` is the ASA balance hold by a Generic Address or `0` if the address -is set to the Global `ZeroAddress` or not opted-in `asset_id`. - -> ⚠️The implementations **MAY** extend the calculation of `circulating_supply` using -> global storage, box storage, etc. See [Example 2](./arc-0062.md#example-2) for -> reference. +is set to the Global `ZeroAddress`, is not opted-in `asset_id`, or the ASA does not exist; +- `custom_balance` (`1 ... 4`) is the ASA balance hold by a Custom Address `N` or `0` if the address +is set to the Global `ZeroAddress`, not opted-in `asset_id`, or the ASA does not exist. ## Security Considerations diff --git a/assets/arc-0062/.algokit.toml b/assets/arc-0062/.algokit.toml deleted file mode 100644 index 55e0a6dc7..000000000 --- a/assets/arc-0062/.algokit.toml +++ /dev/null @@ -1,52 +0,0 @@ -[algokit] -min_version = "v2.0.0" - -[generate.smart-contract] -description = "Generate a new smart contract for existing project" -path = ".algokit/generators/create_contract" - -[generate.env-file] -description = "Generate a new generic or Algorand network specific .env file" -path = ".algokit/generators/create_env_file" - -[project] -type = 'contract' -name = 'asa-circulating-supply' -artifacts = 'smart_contracts/artifacts' - -[project.deploy] -command = "poetry run python -m smart_contracts deploy" -environment_secrets = [ - "DEPLOYER_MNEMONIC", - "DISPENSER_MNEMONIC", -] - -[project.deploy.localnet] -environment_secrets = [] - -[project.run] -# Commands intented for use locally and in CI -build = { commands = [ - 'poetry run python -m smart_contracts build', -], description = 'Build all smart contracts in the project' } -test = { commands = [ - 'poetry run pytest', -], description = 'Run smart contract tests' } -audit = { commands = [ - 'poetry run pip-audit', -], description = 'Audit with pip-audit' } -lint = { commands = [ - 'poetry run black --check --diff .', - 'poetry run ruff check .', - 'poetry run mypy', -], description = 'Perform linting' } -audit-teal = { commands = [ - # 🚨 IMPORTANT 🚨: For strict TEAL validation, remove --exclude statements. The default starter contract is not for production. Ensure thorough testing and adherence to best practices in smart contract development. This is not a replacement for a professional audit. - 'algokit task analyze smart_contracts/artifacts --recursive --force --exclude rekey-to --exclude is-updatable --exclude missing-fee-check --exclude is-deletable --exclude can-close-asset --exclude can-close-account --exclude unprotected-deletable --exclude unprotected-updatable', -], description = 'Audit TEAL files' } - -# Commands intented for CI only, prefixed with `ci-` by convention -ci-teal-diff = { commands = [ - 'git add -N ./smart_contracts/artifacts', - 'git diff --exit-code --minimal ./smart_contracts/artifacts', -], description = 'Check TEAL files for differences' } diff --git a/assets/arc-0062/.editorconfig b/assets/arc-0062/.editorconfig deleted file mode 100644 index e2fda3443..000000000 --- a/assets/arc-0062/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -root=true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true - -[*.py] -indent_size = 4 diff --git a/assets/arc-0062/.gitattributes b/assets/arc-0062/.gitattributes deleted file mode 100644 index 6313b56c5..000000000 --- a/assets/arc-0062/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto eol=lf diff --git a/assets/arc-0062/.gitignore b/assets/arc-0062/.gitignore deleted file mode 100644 index a858d63cb..000000000 --- a/assets/arc-0062/.gitignore +++ /dev/null @@ -1,180 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ -coverage/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -.env.* -!.env.*.template -!.env.template -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Ruff (linter) -.ruff_cache/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -.idea -!.idea/ -.idea/* -!.idea/runConfigurations/ - -# macOS -.DS_Store - -# Received approval test files -*.received.* - -# NPM -node_modules - -# AlgoKit -debug_traces/ -.algokit/static-analysis/tealer/ -.algokit/sources diff --git a/assets/arc-0062/.pre-commit-config.yaml b/assets/arc-0062/.pre-commit-config.yaml deleted file mode 100644 index e37cdb02c..000000000 --- a/assets/arc-0062/.pre-commit-config.yaml +++ /dev/null @@ -1,50 +0,0 @@ -repos: - - - repo: local - hooks: - - - id: black - name: black - description: "Black: The uncompromising Python code formatter" - entry: poetry run black - language: system - minimum_pre_commit_version: 2.9.2 - require_serial: true - types_or: [ python, pyi ] - - - - id: ruff - name: ruff - description: "Run 'ruff' for extremely fast Python linting" - entry: poetry run ruff - language: system - types: [ python ] - args: [ "check", "--fix" ] - require_serial: false - additional_dependencies: [ ] - minimum_pre_commit_version: '0' - files: '^(src|tests)/' - - - - id: mypy - name: mypy - description: '`mypy` will check Python types for correctness' - entry: poetry run mypy - language: system - types_or: [ python, pyi ] - require_serial: true - additional_dependencies: [ ] - minimum_pre_commit_version: '2.9.2' - files: '^(src|tests)/' - - - - id: tealer - name: tealer - description: "Run AlgoKit `Tealer` for TEAL static analysis" - entry: algokit - language: system - args: [project, run, "audit-teal"] - require_serial: false - additional_dependencies: [] - minimum_pre_commit_version: "0" - files: '^.*\.teal$' diff --git a/assets/arc-0062/LICENSE b/assets/arc-0062/LICENSE deleted file mode 100644 index 0e259d42c..000000000 --- a/assets/arc-0062/LICENSE +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/assets/arc-0062/README.md b/assets/arc-0062/README.md deleted file mode 100644 index cdf749c76..000000000 --- a/assets/arc-0062/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# ARC-62 Reference Implementation - -This is the reference implementation of ASA Circulating Supply App based on the -[ARC-62 specification](../../ARCs/arc-0062.md). - -## Adoption - -Explorers supporting ARC-62: - -- Pera Explorer (example) - -ASA adopting ARC-62: - -- Midas US Treasury Bill Token (mTBILL) - -## Demo - -1. Download the [AppSpec JSON file](./smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc56.json) -2. Open the Lora App Lab in TestNet -3. Enter the App ID `740315445` and click on _"Use existing"_ -4. Upload the AppSpec JSON and click _"Next"_ and then _"Create"_ -5. Open the App -6. Connect a TestNet Wallet -7. Select the `arc62_get_circulating_supply` method and click _"Call"_ -8. Enter `740315456` as `asset_id` argument and click _"Add"_ -9. Click on _"Populate Resources"_ -10. Click on _"Simulate"_ and inspect the result (answer should be `1`) - -## Test - -Install the project Python dependencies: - -`poetry install` - -Run the test: - -```shell -poetry run pytest -s -v tests/test_get_circulating_supply.py::test_pass_get_circulating_supply -``` diff --git a/assets/arc-0062/poetry.lock b/assets/arc-0062/poetry.lock deleted file mode 100644 index 92428f77a..000000000 --- a/assets/arc-0062/poetry.lock +++ /dev/null @@ -1,2513 +0,0 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. - -[[package]] -name = "aiohappyeyeballs" -version = "2.6.1" -description = "Happy Eyeballs for asyncio" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8"}, - {file = "aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558"}, -] - -[[package]] -name = "aiohttp" -version = "3.13.2" -description = "Async http client/server framework (asyncio)" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "aiohttp-3.13.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2372b15a5f62ed37789a6b383ff7344fc5b9f243999b0cd9b629d8bc5f5b4155"}, - {file = "aiohttp-3.13.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7f8659a48995edee7229522984bd1009c1213929c769c2daa80b40fe49a180c"}, - {file = "aiohttp-3.13.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:939ced4a7add92296b0ad38892ce62b98c619288a081170695c6babe4f50e636"}, - {file = "aiohttp-3.13.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6315fb6977f1d0dd41a107c527fee2ed5ab0550b7d885bc15fee20ccb17891da"}, - {file = "aiohttp-3.13.2-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6e7352512f763f760baaed2637055c49134fd1d35b37c2dedfac35bfe5cf8725"}, - {file = "aiohttp-3.13.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e09a0a06348a2dd73e7213353c90d709502d9786219f69b731f6caa0efeb46f5"}, - {file = "aiohttp-3.13.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a09a6d073fb5789456545bdee2474d14395792faa0527887f2f4ec1a486a59d3"}, - {file = "aiohttp-3.13.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b59d13c443f8e049d9e94099c7e412e34610f1f49be0f230ec656a10692a5802"}, - {file = "aiohttp-3.13.2-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:20db2d67985d71ca033443a1ba2001c4b5693fe09b0e29f6d9358a99d4d62a8a"}, - {file = "aiohttp-3.13.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:960c2fc686ba27b535f9fd2b52d87ecd7e4fd1cf877f6a5cba8afb5b4a8bd204"}, - {file = "aiohttp-3.13.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6c00dbcf5f0d88796151e264a8eab23de2997c9303dd7c0bf622e23b24d3ce22"}, - {file = "aiohttp-3.13.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fed38a5edb7945f4d1bcabe2fcd05db4f6ec7e0e82560088b754f7e08d93772d"}, - {file = "aiohttp-3.13.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:b395bbca716c38bef3c764f187860e88c724b342c26275bc03e906142fc5964f"}, - {file = "aiohttp-3.13.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:204ffff2426c25dfda401ba08da85f9c59525cdc42bda26660463dd1cbcfec6f"}, - {file = "aiohttp-3.13.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:05c4dd3c48fb5f15db31f57eb35374cb0c09afdde532e7fb70a75aede0ed30f6"}, - {file = "aiohttp-3.13.2-cp310-cp310-win32.whl", hash = "sha256:e574a7d61cf10351d734bcddabbe15ede0eaa8a02070d85446875dc11189a251"}, - {file = "aiohttp-3.13.2-cp310-cp310-win_amd64.whl", hash = "sha256:364f55663085d658b8462a1c3f17b2b84a5c2e1ba858e1b79bff7b2e24ad1514"}, - {file = "aiohttp-3.13.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4647d02df098f6434bafd7f32ad14942f05a9caa06c7016fdcc816f343997dd0"}, - {file = "aiohttp-3.13.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e3403f24bcb9c3b29113611c3c16a2a447c3953ecf86b79775e7be06f7ae7ccb"}, - {file = "aiohttp-3.13.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:43dff14e35aba17e3d6d5ba628858fb8cb51e30f44724a2d2f0c75be492c55e9"}, - {file = "aiohttp-3.13.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2a9ea08e8c58bb17655630198833109227dea914cd20be660f52215f6de5613"}, - {file = "aiohttp-3.13.2-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53b07472f235eb80e826ad038c9d106c2f653584753f3ddab907c83f49eedead"}, - {file = "aiohttp-3.13.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e736c93e9c274fce6419af4aac199984d866e55f8a4cec9114671d0ea9688780"}, - {file = "aiohttp-3.13.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ff5e771f5dcbc81c64898c597a434f7682f2259e0cd666932a913d53d1341d1a"}, - {file = "aiohttp-3.13.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3b6fb0c207cc661fa0bf8c66d8d9b657331ccc814f4719468af61034b478592"}, - {file = "aiohttp-3.13.2-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:97a0895a8e840ab3520e2288db7cace3a1981300d48babeb50e7425609e2e0ab"}, - {file = "aiohttp-3.13.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9e8f8afb552297aca127c90cb840e9a1d4bfd6a10d7d8f2d9176e1acc69bad30"}, - {file = "aiohttp-3.13.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:ed2f9c7216e53c3df02264f25d824b079cc5914f9e2deba94155190ef648ee40"}, - {file = "aiohttp-3.13.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:99c5280a329d5fa18ef30fd10c793a190d996567667908bef8a7f81f8202b948"}, - {file = "aiohttp-3.13.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ca6ffef405fc9c09a746cb5d019c1672cd7f402542e379afc66b370833170cf"}, - {file = "aiohttp-3.13.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:47f438b1a28e926c37632bff3c44df7d27c9b57aaf4e34b1def3c07111fdb782"}, - {file = "aiohttp-3.13.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9acda8604a57bb60544e4646a4615c1866ee6c04a8edef9b8ee6fd1d8fa2ddc8"}, - {file = "aiohttp-3.13.2-cp311-cp311-win32.whl", hash = "sha256:868e195e39b24aaa930b063c08bb0c17924899c16c672a28a65afded9c46c6ec"}, - {file = "aiohttp-3.13.2-cp311-cp311-win_amd64.whl", hash = "sha256:7fd19df530c292542636c2a9a85854fab93474396a52f1695e799186bbd7f24c"}, - {file = "aiohttp-3.13.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b1e56bab2e12b2b9ed300218c351ee2a3d8c8fdab5b1ec6193e11a817767e47b"}, - {file = "aiohttp-3.13.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:364e25edaabd3d37b1db1f0cbcee8c73c9a3727bfa262b83e5e4cf3489a2a9dc"}, - {file = "aiohttp-3.13.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c5c94825f744694c4b8db20b71dba9a257cd2ba8e010a803042123f3a25d50d7"}, - {file = "aiohttp-3.13.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba2715d842ffa787be87cbfce150d5e88c87a98e0b62e0f5aa489169a393dbbb"}, - {file = "aiohttp-3.13.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:585542825c4bc662221fb257889e011a5aa00f1ae4d75d1d246a5225289183e3"}, - {file = "aiohttp-3.13.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:39d02cb6025fe1aabca329c5632f48c9532a3dabccd859e7e2f110668972331f"}, - {file = "aiohttp-3.13.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e67446b19e014d37342f7195f592a2a948141d15a312fe0e700c2fd2f03124f6"}, - {file = "aiohttp-3.13.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4356474ad6333e41ccefd39eae869ba15a6c5299c9c01dfdcfdd5c107be4363e"}, - {file = "aiohttp-3.13.2-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eeacf451c99b4525f700f078becff32c32ec327b10dcf31306a8a52d78166de7"}, - {file = "aiohttp-3.13.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8a9b889aeabd7a4e9af0b7f4ab5ad94d42e7ff679aaec6d0db21e3b639ad58d"}, - {file = "aiohttp-3.13.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fa89cb11bc71a63b69568d5b8a25c3ca25b6d54c15f907ca1c130d72f320b76b"}, - {file = "aiohttp-3.13.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8aa7c807df234f693fed0ecd507192fc97692e61fee5702cdc11155d2e5cadc8"}, - {file = "aiohttp-3.13.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9eb3e33fdbe43f88c3c75fa608c25e7c47bbd80f48d012763cb67c47f39a7e16"}, - {file = "aiohttp-3.13.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9434bc0d80076138ea986833156c5a48c9c7a8abb0c96039ddbb4afc93184169"}, - {file = "aiohttp-3.13.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ff15c147b2ad66da1f2cbb0622313f2242d8e6e8f9b79b5206c84523a4473248"}, - {file = "aiohttp-3.13.2-cp312-cp312-win32.whl", hash = "sha256:27e569eb9d9e95dbd55c0fc3ec3a9335defbf1d8bc1d20171a49f3c4c607b93e"}, - {file = "aiohttp-3.13.2-cp312-cp312-win_amd64.whl", hash = "sha256:8709a0f05d59a71f33fd05c17fc11fcb8c30140506e13c2f5e8ee1b8964e1b45"}, - {file = "aiohttp-3.13.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7519bdc7dfc1940d201651b52bf5e03f5503bda45ad6eacf64dda98be5b2b6be"}, - {file = "aiohttp-3.13.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:088912a78b4d4f547a1f19c099d5a506df17eacec3c6f4375e2831ec1d995742"}, - {file = "aiohttp-3.13.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5276807b9de9092af38ed23ce120539ab0ac955547b38563a9ba4f5b07b95293"}, - {file = "aiohttp-3.13.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1237c1375eaef0db4dcd7c2559f42e8af7b87ea7d295b118c60c36a6e61cb811"}, - {file = "aiohttp-3.13.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:96581619c57419c3d7d78703d5b78c1e5e5fc0172d60f555bdebaced82ded19a"}, - {file = "aiohttp-3.13.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a2713a95b47374169409d18103366de1050fe0ea73db358fc7a7acb2880422d4"}, - {file = "aiohttp-3.13.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:228a1cd556b3caca590e9511a89444925da87d35219a49ab5da0c36d2d943a6a"}, - {file = "aiohttp-3.13.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac6cde5fba8d7d8c6ac963dbb0256a9854e9fafff52fbcc58fdf819357892c3e"}, - {file = "aiohttp-3.13.2-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f2bef8237544f4e42878c61cef4e2839fee6346dc60f5739f876a9c50be7fcdb"}, - {file = "aiohttp-3.13.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:16f15a4eac3bc2d76c45f7ebdd48a65d41b242eb6c31c2245463b40b34584ded"}, - {file = "aiohttp-3.13.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:bb7fb776645af5cc58ab804c58d7eba545a97e047254a52ce89c157b5af6cd0b"}, - {file = "aiohttp-3.13.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e1b4951125ec10c70802f2cb09736c895861cd39fd9dcb35107b4dc8ae6220b8"}, - {file = "aiohttp-3.13.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:550bf765101ae721ee1d37d8095f47b1f220650f85fe1af37a90ce75bab89d04"}, - {file = "aiohttp-3.13.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fe91b87fc295973096251e2d25a811388e7d8adf3bd2b97ef6ae78bc4ac6c476"}, - {file = "aiohttp-3.13.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e0c8e31cfcc4592cb200160344b2fb6ae0f9e4effe06c644b5a125d4ae5ebe23"}, - {file = "aiohttp-3.13.2-cp313-cp313-win32.whl", hash = "sha256:0740f31a60848d6edb296a0df827473eede90c689b8f9f2a4cdde74889eb2254"}, - {file = "aiohttp-3.13.2-cp313-cp313-win_amd64.whl", hash = "sha256:a88d13e7ca367394908f8a276b89d04a3652044612b9a408a0bb22a5ed976a1a"}, - {file = "aiohttp-3.13.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:2475391c29230e063ef53a66669b7b691c9bfc3f1426a0f7bcdf1216bdbac38b"}, - {file = "aiohttp-3.13.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:f33c8748abef4d8717bb20e8fb1b3e07c6adacb7fd6beaae971a764cf5f30d61"}, - {file = "aiohttp-3.13.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ae32f24bbfb7dbb485a24b30b1149e2f200be94777232aeadba3eecece4d0aa4"}, - {file = "aiohttp-3.13.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d7f02042c1f009ffb70067326ef183a047425bb2ff3bc434ead4dd4a4a66a2b"}, - {file = "aiohttp-3.13.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:93655083005d71cd6c072cdab54c886e6570ad2c4592139c3fb967bfc19e4694"}, - {file = "aiohttp-3.13.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0db1e24b852f5f664cd728db140cf11ea0e82450471232a394b3d1a540b0f906"}, - {file = "aiohttp-3.13.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b009194665bcd128e23eaddef362e745601afa4641930848af4c8559e88f18f9"}, - {file = "aiohttp-3.13.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c038a8fdc8103cd51dbd986ecdce141473ffd9775a7a8057a6ed9c3653478011"}, - {file = "aiohttp-3.13.2-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:66bac29b95a00db411cd758fea0e4b9bdba6d549dfe333f9a945430f5f2cc5a6"}, - {file = "aiohttp-3.13.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4ebf9cfc9ba24a74cf0718f04aac2a3bbe745902cc7c5ebc55c0f3b5777ef213"}, - {file = "aiohttp-3.13.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a4b88ebe35ce54205c7074f7302bd08a4cb83256a3e0870c72d6f68a3aaf8e49"}, - {file = "aiohttp-3.13.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:98c4fb90bb82b70a4ed79ca35f656f4281885be076f3f970ce315402b53099ae"}, - {file = "aiohttp-3.13.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:ec7534e63ae0f3759df3a1ed4fa6bc8f75082a924b590619c0dd2f76d7043caa"}, - {file = "aiohttp-3.13.2-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5b927cf9b935a13e33644cbed6c8c4b2d0f25b713d838743f8fe7191b33829c4"}, - {file = "aiohttp-3.13.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:88d6c017966a78c5265d996c19cdb79235be5e6412268d7e2ce7dee339471b7a"}, - {file = "aiohttp-3.13.2-cp314-cp314-win32.whl", hash = "sha256:f7c183e786e299b5d6c49fb43a769f8eb8e04a2726a2bd5887b98b5cc2d67940"}, - {file = "aiohttp-3.13.2-cp314-cp314-win_amd64.whl", hash = "sha256:fe242cd381e0fb65758faf5ad96c2e460df6ee5b2de1072fe97e4127927e00b4"}, - {file = "aiohttp-3.13.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:f10d9c0b0188fe85398c61147bbd2a657d616c876863bfeff43376e0e3134673"}, - {file = "aiohttp-3.13.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:e7c952aefdf2460f4ae55c5e9c3e80aa72f706a6317e06020f80e96253b1accd"}, - {file = "aiohttp-3.13.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c20423ce14771d98353d2e25e83591fa75dfa90a3c1848f3d7c68243b4fbded3"}, - {file = "aiohttp-3.13.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e96eb1a34396e9430c19d8338d2ec33015e4a87ef2b4449db94c22412e25ccdf"}, - {file = "aiohttp-3.13.2-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:23fb0783bc1a33640036465019d3bba069942616a6a2353c6907d7fe1ccdaf4e"}, - {file = "aiohttp-3.13.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e1a9bea6244a1d05a4e57c295d69e159a5c50d8ef16aa390948ee873478d9a5"}, - {file = "aiohttp-3.13.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0a3d54e822688b56e9f6b5816fb3de3a3a64660efac64e4c2dc435230ad23bad"}, - {file = "aiohttp-3.13.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7a653d872afe9f33497215745da7a943d1dc15b728a9c8da1c3ac423af35178e"}, - {file = "aiohttp-3.13.2-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:56d36e80d2003fa3fc0207fac644216d8532e9504a785ef9a8fd013f84a42c61"}, - {file = "aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:78cd586d8331fb8e241c2dd6b2f4061778cc69e150514b39a9e28dd050475661"}, - {file = "aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:20b10bbfbff766294fe99987f7bb3b74fdd2f1a2905f2562132641ad434dcf98"}, - {file = "aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9ec49dff7e2b3c85cdeaa412e9d438f0ecd71676fde61ec57027dd392f00c693"}, - {file = "aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:94f05348c4406450f9d73d38efb41d669ad6cd90c7ee194810d0eefbfa875a7a"}, - {file = "aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:fa4dcb605c6f82a80c7f95713c2b11c3b8e9893b3ebd2bc9bde93165ed6107be"}, - {file = "aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cf00e5db968c3f67eccd2778574cf64d8b27d95b237770aa32400bd7a1ca4f6c"}, - {file = "aiohttp-3.13.2-cp314-cp314t-win32.whl", hash = "sha256:d23b5fe492b0805a50d3371e8a728a9134d8de5447dce4c885f5587294750734"}, - {file = "aiohttp-3.13.2-cp314-cp314t-win_amd64.whl", hash = "sha256:ff0a7b0a82a7ab905cbda74006318d1b12e37c797eb1b0d4eb3e316cf47f658f"}, - {file = "aiohttp-3.13.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7fbdf5ad6084f1940ce88933de34b62358d0f4a0b6ec097362dcd3e5a65a4989"}, - {file = "aiohttp-3.13.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7c3a50345635a02db61792c85bb86daffac05330f6473d524f1a4e3ef9d0046d"}, - {file = "aiohttp-3.13.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e87dff73f46e969af38ab3f7cb75316a7c944e2e574ff7c933bc01b10def7f5"}, - {file = "aiohttp-3.13.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2adebd4577724dcae085665f294cc57c8701ddd4d26140504db622b8d566d7aa"}, - {file = "aiohttp-3.13.2-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e036a3a645fe92309ec34b918394bb377950cbb43039a97edae6c08db64b23e2"}, - {file = "aiohttp-3.13.2-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:23ad365e30108c422d0b4428cf271156dd56790f6dd50d770b8e360e6c5ab2e6"}, - {file = "aiohttp-3.13.2-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1f9b2c2d4b9d958b1f9ae0c984ec1dd6b6689e15c75045be8ccb4011426268ca"}, - {file = "aiohttp-3.13.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a92cf4b9bea33e15ecbaa5c59921be0f23222608143d025c989924f7e3e0c07"}, - {file = "aiohttp-3.13.2-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:070599407f4954021509193404c4ac53153525a19531051661440644728ba9a7"}, - {file = "aiohttp-3.13.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:29562998ec66f988d49fb83c9b01694fa927186b781463f376c5845c121e4e0b"}, - {file = "aiohttp-3.13.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4dd3db9d0f4ebca1d887d76f7cdbcd1116ac0d05a9221b9dad82c64a62578c4d"}, - {file = "aiohttp-3.13.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d7bc4b7f9c4921eba72677cd9fedd2308f4a4ca3e12fab58935295ad9ea98700"}, - {file = "aiohttp-3.13.2-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:dacd50501cd017f8cccb328da0c90823511d70d24a323196826d923aad865901"}, - {file = "aiohttp-3.13.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8b2f1414f6a1e0683f212ec80e813f4abef94c739fd090b66c9adf9d2a05feac"}, - {file = "aiohttp-3.13.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04c3971421576ed24c191f610052bcb2f059e395bc2489dd99e397f9bc466329"}, - {file = "aiohttp-3.13.2-cp39-cp39-win32.whl", hash = "sha256:9f377d0a924e5cc94dc620bc6366fc3e889586a7f18b748901cf016c916e2084"}, - {file = "aiohttp-3.13.2-cp39-cp39-win_amd64.whl", hash = "sha256:9c705601e16c03466cb72011bd1af55d68fa65b045356d8f96c216e5f6db0fa5"}, - {file = "aiohttp-3.13.2.tar.gz", hash = "sha256:40176a52c186aefef6eb3cad2cdd30cd06e3afbe88fe8ab2af9c0b90f228daca"}, -] - -[package.dependencies] -aiohappyeyeballs = ">=2.5.0" -aiosignal = ">=1.4.0" -attrs = ">=17.3.0" -frozenlist = ">=1.1.1" -multidict = ">=4.5,<7.0" -propcache = ">=0.2.0" -yarl = ">=1.17.0,<2.0" - -[package.extras] -speedups = ["Brotli ; platform_python_implementation == \"CPython\"", "aiodns (>=3.3.0)", "backports.zstd ; platform_python_implementation == \"CPython\" and python_version < \"3.14\"", "brotlicffi ; platform_python_implementation != \"CPython\""] - -[[package]] -name = "aiosignal" -version = "1.4.0" -description = "aiosignal: a list of registered asynchronous callbacks" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e"}, - {file = "aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7"}, -] - -[package.dependencies] -frozenlist = ">=1.1.0" -typing-extensions = {version = ">=4.2", markers = "python_version < \"3.13\""} - -[[package]] -name = "algokit-client-generator" -version = "2.2.0" -description = "Algorand typed client Generator" -optional = false -python-versions = "<4.0,>=3.10" -groups = ["dev"] -files = [ - {file = "algokit_client_generator-2.2.0-py3-none-any.whl", hash = "sha256:f723aa77fb265b38e98836b13b830789c46467ba647815ff4a0a7dee3f64b74a"}, -] - -[package.dependencies] -algokit-utils = ">=4.0.1,<5.0.0" - -[[package]] -name = "algokit-utils" -version = "4.2.2" -description = "Utilities for Algorand development for use by AlgoKit" -optional = false -python-versions = "<4.0,>=3.10" -groups = ["main", "dev"] -files = [ - {file = "algokit_utils-4.2.2-py3-none-any.whl", hash = "sha256:56f1f5dd30d2bd433737e9425b97e12cde90f2b2b6b6601e25056ce5cbb892e6"}, -] - -[package.dependencies] -httpx = ">=0.23.1,<=0.28.1" -py-algorand-sdk = ">=2.11.0,<3.0.0" -typing-extensions = ">=4.6.0" - -[[package]] -name = "algorand-python" -version = "3.1.1" -description = "API for writing Algorand Python Smart contracts" -optional = false -python-versions = "<4,>=3.12.0" -groups = ["main"] -files = [ - {file = "algorand_python-3.1.1-py3-none-any.whl", hash = "sha256:502fd2b1974d02a7a566537a1aea76eeb4adfd198a195a4bf30b9296d5ebeeae"}, -] - -[[package]] -name = "anyio" -version = "4.11.0" -description = "High-level concurrency and networking framework on top of asyncio or Trio" -optional = false -python-versions = ">=3.9" -groups = ["main", "dev"] -files = [ - {file = "anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc"}, - {file = "anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4"}, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" -typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} - -[package.extras] -trio = ["trio (>=0.31.0)"] - -[[package]] -name = "attrs" -version = "25.4.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373"}, - {file = "attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11"}, -] - -[[package]] -name = "black" -version = "25.9.0" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "black-25.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ce41ed2614b706fd55fd0b4a6909d06b5bab344ffbfadc6ef34ae50adba3d4f7"}, - {file = "black-25.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ab0ce111ef026790e9b13bd216fa7bc48edd934ffc4cbf78808b235793cbc92"}, - {file = "black-25.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f96b6726d690c96c60ba682955199f8c39abc1ae0c3a494a9c62c0184049a713"}, - {file = "black-25.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:d119957b37cc641596063cd7db2656c5be3752ac17877017b2ffcdb9dfc4d2b1"}, - {file = "black-25.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:456386fe87bad41b806d53c062e2974615825c7a52159cde7ccaeb0695fa28fa"}, - {file = "black-25.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a16b14a44c1af60a210d8da28e108e13e75a284bf21a9afa6b4571f96ab8bb9d"}, - {file = "black-25.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aaf319612536d502fdd0e88ce52d8f1352b2c0a955cc2798f79eeca9d3af0608"}, - {file = "black-25.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:c0372a93e16b3954208417bfe448e09b0de5cc721d521866cd9e0acac3c04a1f"}, - {file = "black-25.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1b9dc70c21ef8b43248f1d86aedd2aaf75ae110b958a7909ad8463c4aa0880b0"}, - {file = "black-25.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8e46eecf65a095fa62e53245ae2795c90bdecabd53b50c448d0a8bcd0d2e74c4"}, - {file = "black-25.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9101ee58ddc2442199a25cb648d46ba22cd580b00ca4b44234a324e3ec7a0f7e"}, - {file = "black-25.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:77e7060a00c5ec4b3367c55f39cf9b06e68965a4f2e61cecacd6d0d9b7ec945a"}, - {file = "black-25.9.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0172a012f725b792c358d57fe7b6b6e8e67375dd157f64fa7a3097b3ed3e2175"}, - {file = "black-25.9.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3bec74ee60f8dfef564b573a96b8930f7b6a538e846123d5ad77ba14a8d7a64f"}, - {file = "black-25.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b756fc75871cb1bcac5499552d771822fd9db5a2bb8db2a7247936ca48f39831"}, - {file = "black-25.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:846d58e3ce7879ec1ffe816bb9df6d006cd9590515ed5d17db14e17666b2b357"}, - {file = "black-25.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef69351df3c84485a8beb6f7b8f9721e2009e20ef80a8d619e2d1788b7816d47"}, - {file = "black-25.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e3c1f4cd5e93842774d9ee4ef6cd8d17790e65f44f7cdbaab5f2cf8ccf22a823"}, - {file = "black-25.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:154b06d618233fe468236ba1f0e40823d4eb08b26f5e9261526fde34916b9140"}, - {file = "black-25.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:e593466de7b998374ea2585a471ba90553283fb9beefcfa430d84a2651ed5933"}, - {file = "black-25.9.0-py3-none-any.whl", hash = "sha256:474b34c1342cdc157d307b56c4c65bce916480c4a8f6551fdc6bf9b486a7c4ae"}, - {file = "black-25.9.0.tar.gz", hash = "sha256:0474bca9a0dd1b51791fcc507a4e02078a1c63f6d4e4ae5544b9848c7adfb619"}, -] - -[package.dependencies] -aiohttp = {version = ">=3.10", optional = true, markers = "extra == \"d\""} -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" -pytokens = ">=0.1.10" - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.10)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - -[[package]] -name = "boolean-py" -version = "5.0" -description = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9"}, - {file = "boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95"}, -] - -[package.extras] -dev = ["build", "twine"] -docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)", "sphinxcontrib-apidoc (>=0.3.0)"] -linting = ["black", "isort", "pycodestyle"] -testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] - -[[package]] -name = "cachecontrol" -version = "0.14.3" -description = "httplib2 caching for requests" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "cachecontrol-0.14.3-py3-none-any.whl", hash = "sha256:b35e44a3113f17d2a31c1e6b27b9de6d4405f84ae51baa8c1d3cc5b633010cae"}, - {file = "cachecontrol-0.14.3.tar.gz", hash = "sha256:73e7efec4b06b20d9267b441c1f733664f989fb8688391b670ca812d70795d11"}, -] - -[package.dependencies] -filelock = {version = ">=3.8.0", optional = true, markers = "extra == \"filecache\""} -msgpack = ">=0.5.2,<2.0.0" -requests = ">=2.16.0" - -[package.extras] -dev = ["CacheControl[filecache,redis]", "build", "cherrypy", "codespell[tomli]", "furo", "mypy", "pytest", "pytest-cov", "ruff", "sphinx", "sphinx-copybutton", "tox", "types-redis", "types-requests"] -filecache = ["filelock (>=3.8.0)"] -redis = ["redis (>=2.10.5)"] - -[[package]] -name = "cattrs" -version = "25.3.0" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "cattrs-25.3.0-py3-none-any.whl", hash = "sha256:9896e84e0a5bf723bc7b4b68f4481785367ce07a8a02e7e9ee6eb2819bc306ff"}, - {file = "cattrs-25.3.0.tar.gz", hash = "sha256:1ac88d9e5eda10436c4517e390a4142d88638fe682c436c93db7ce4a277b884a"}, -] - -[package.dependencies] -attrs = ">=25.4.0" -typing-extensions = ">=4.14.0" - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.19.0) ; implementation_name == \"cpython\""] -orjson = ["orjson (>=3.11.3) ; implementation_name == \"cpython\""] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.10.0)"] - -[[package]] -name = "certifi" -version = "2025.10.5" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.7" -groups = ["main", "dev"] -files = [ - {file = "certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de"}, - {file = "certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43"}, -] - -[[package]] -name = "cffi" -version = "2.0.0" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.9" -groups = ["main", "dev"] -markers = "platform_python_implementation != \"PyPy\"" -files = [ - {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"}, - {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"}, - {file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"}, - {file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"}, - {file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"}, - {file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"}, - {file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"}, - {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"}, - {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"}, - {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"}, - {file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"}, - {file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"}, - {file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"}, - {file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"}, - {file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"}, - {file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"}, - {file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"}, - {file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"}, - {file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"}, - {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"}, - {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"}, - {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"}, - {file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"}, - {file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"}, - {file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"}, - {file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"}, - {file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"}, - {file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"}, - {file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"}, - {file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"}, - {file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"}, - {file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"}, - {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"}, - {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"}, - {file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"}, - {file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"}, - {file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"}, - {file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"}, - {file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"}, - {file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"}, - {file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"}, - {file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"}, - {file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"}, - {file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"}, - {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"}, - {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"}, - {file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"}, - {file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"}, - {file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"}, - {file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"}, - {file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"}, - {file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"}, - {file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"}, - {file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"}, - {file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"}, - {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"}, - {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"}, - {file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"}, - {file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"}, - {file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"}, - {file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"}, - {file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"}, - {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"}, - {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"}, - {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"}, - {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"}, - {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"}, - {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"}, - {file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"}, - {file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"}, - {file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"}, - {file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"}, - {file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"}, - {file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"}, - {file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"}, - {file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"}, - {file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"}, - {file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"}, - {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"}, - {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"}, - {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"}, - {file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"}, - {file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"}, - {file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"}, -] - -[package.dependencies] -pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} - -[[package]] -name = "cfgv" -version = "3.4.0" -description = "Validate configuration and produce human readable error messages." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, - {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.4" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"}, - {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, - {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, -] - -[[package]] -name = "click" -version = "8.3.0" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.10" -groups = ["dev"] -files = [ - {file = "click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc"}, - {file = "click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] -markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "coverage" -version = "7.11.0" -description = "Code coverage measurement for Python" -optional = false -python-versions = ">=3.10" -groups = ["dev"] -files = [ - {file = "coverage-7.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eb53f1e8adeeb2e78962bade0c08bfdc461853c7969706ed901821e009b35e31"}, - {file = "coverage-7.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d9a03ec6cb9f40a5c360f138b88266fd8f58408d71e89f536b4f91d85721d075"}, - {file = "coverage-7.11.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0d7f0616c557cbc3d1c2090334eddcbb70e1ae3a40b07222d62b3aa47f608fab"}, - {file = "coverage-7.11.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e44a86a47bbdf83b0a3ea4d7df5410d6b1a0de984fbd805fa5101f3624b9abe0"}, - {file = "coverage-7.11.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:596763d2f9a0ee7eec6e643e29660def2eef297e1de0d334c78c08706f1cb785"}, - {file = "coverage-7.11.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ef55537ff511b5e0a43edb4c50a7bf7ba1c3eea20b4f49b1490f1e8e0e42c591"}, - {file = "coverage-7.11.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cbabd8f4d0d3dc571d77ae5bdbfa6afe5061e679a9d74b6797c48d143307088"}, - {file = "coverage-7.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e24045453384e0ae2a587d562df2a04d852672eb63051d16096d3f08aa4c7c2f"}, - {file = "coverage-7.11.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:7161edd3426c8d19bdccde7d49e6f27f748f3c31cc350c5de7c633fea445d866"}, - {file = "coverage-7.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d4ed4de17e692ba6415b0587bc7f12bc80915031fc9db46a23ce70fc88c9841"}, - {file = "coverage-7.11.0-cp310-cp310-win32.whl", hash = "sha256:765c0bc8fe46f48e341ef737c91c715bd2a53a12792592296a095f0c237e09cf"}, - {file = "coverage-7.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:24d6f3128f1b2d20d84b24f4074475457faedc3d4613a7e66b5e769939c7d969"}, - {file = "coverage-7.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d58ecaa865c5b9fa56e35efc51d1014d4c0d22838815b9fce57a27dd9576847"}, - {file = "coverage-7.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b679e171f1c104a5668550ada700e3c4937110dbdd153b7ef9055c4f1a1ee3cc"}, - {file = "coverage-7.11.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ca61691ba8c5b6797deb221a0d09d7470364733ea9c69425a640f1f01b7c5bf0"}, - {file = "coverage-7.11.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:aef1747ede4bd8ca9cfc04cc3011516500c6891f1b33a94add3253f6f876b7b7"}, - {file = "coverage-7.11.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1839d08406e4cba2953dcc0ffb312252f14d7c4c96919f70167611f4dee2623"}, - {file = "coverage-7.11.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e0eb0a2dcc62478eb5b4cbb80b97bdee852d7e280b90e81f11b407d0b81c4287"}, - {file = "coverage-7.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bc1fbea96343b53f65d5351d8fd3b34fd415a2670d7c300b06d3e14a5af4f552"}, - {file = "coverage-7.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:214b622259dd0cf435f10241f1333d32caa64dbc27f8790ab693428a141723de"}, - {file = "coverage-7.11.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:258d9967520cca899695d4eb7ea38be03f06951d6ca2f21fb48b1235f791e601"}, - {file = "coverage-7.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cf9e6ff4ca908ca15c157c409d608da77a56a09877b97c889b98fb2c32b6465e"}, - {file = "coverage-7.11.0-cp311-cp311-win32.whl", hash = "sha256:fcc15fc462707b0680cff6242c48625da7f9a16a28a41bb8fd7a4280920e676c"}, - {file = "coverage-7.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:865965bf955d92790f1facd64fe7ff73551bd2c1e7e6b26443934e9701ba30b9"}, - {file = "coverage-7.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:5693e57a065760dcbeb292d60cc4d0231a6d4b6b6f6a3191561e1d5e8820b745"}, - {file = "coverage-7.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9c49e77811cf9d024b95faf86c3f059b11c0c9be0b0d61bc598f453703bd6fd1"}, - {file = "coverage-7.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a61e37a403a778e2cda2a6a39abcc895f1d984071942a41074b5c7ee31642007"}, - {file = "coverage-7.11.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c79cae102bb3b1801e2ef1511fb50e91ec83a1ce466b2c7c25010d884336de46"}, - {file = "coverage-7.11.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:16ce17ceb5d211f320b62df002fa7016b7442ea0fd260c11cec8ce7730954893"}, - {file = "coverage-7.11.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:80027673e9d0bd6aef86134b0771845e2da85755cf686e7c7c59566cf5a89115"}, - {file = "coverage-7.11.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d3ffa07a08657306cd2215b0da53761c4d73cb54d9143b9303a6481ec0cd415"}, - {file = "coverage-7.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a3b6a5f8b2524fd6c1066bc85bfd97e78709bb5e37b5b94911a6506b65f47186"}, - {file = "coverage-7.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fcc0a4aa589de34bc56e1a80a740ee0f8c47611bdfb28cd1849de60660f3799d"}, - {file = "coverage-7.11.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:dba82204769d78c3fd31b35c3d5f46e06511936c5019c39f98320e05b08f794d"}, - {file = "coverage-7.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:81b335f03ba67309a95210caf3eb43bd6fe75a4e22ba653ef97b4696c56c7ec2"}, - {file = "coverage-7.11.0-cp312-cp312-win32.whl", hash = "sha256:037b2d064c2f8cc8716fe4d39cb705779af3fbf1ba318dc96a1af858888c7bb5"}, - {file = "coverage-7.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:d66c0104aec3b75e5fd897e7940188ea1892ca1d0235316bf89286d6a22568c0"}, - {file = "coverage-7.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:d91ebeac603812a09cf6a886ba6e464f3bbb367411904ae3790dfe28311b15ad"}, - {file = "coverage-7.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cc3f49e65ea6e0d5d9bd60368684fe52a704d46f9e7fc413918f18d046ec40e1"}, - {file = "coverage-7.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f39ae2f63f37472c17b4990f794035c9890418b1b8cca75c01193f3c8d3e01be"}, - {file = "coverage-7.11.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7db53b5cdd2917b6eaadd0b1251cf4e7d96f4a8d24e174bdbdf2f65b5ea7994d"}, - {file = "coverage-7.11.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10ad04ac3a122048688387828b4537bc9cf60c0bf4869c1e9989c46e45690b82"}, - {file = "coverage-7.11.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4036cc9c7983a2b1f2556d574d2eb2154ac6ed55114761685657e38782b23f52"}, - {file = "coverage-7.11.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7ab934dd13b1c5e94b692b1e01bd87e4488cb746e3a50f798cb9464fd128374b"}, - {file = "coverage-7.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59a6e5a265f7cfc05f76e3bb53eca2e0dfe90f05e07e849930fecd6abb8f40b4"}, - {file = "coverage-7.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df01d6c4c81e15a7c88337b795bb7595a8596e92310266b5072c7e301168efbd"}, - {file = "coverage-7.11.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:8c934bd088eed6174210942761e38ee81d28c46de0132ebb1801dbe36a390dcc"}, - {file = "coverage-7.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a03eaf7ec24078ad64a07f02e30060aaf22b91dedf31a6b24d0d98d2bba7f48"}, - {file = "coverage-7.11.0-cp313-cp313-win32.whl", hash = "sha256:695340f698a5f56f795b2836abe6fb576e7c53d48cd155ad2f80fd24bc63a040"}, - {file = "coverage-7.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:2727d47fce3ee2bac648528e41455d1b0c46395a087a229deac75e9f88ba5a05"}, - {file = "coverage-7.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:0efa742f431529699712b92ecdf22de8ff198df41e43aeaaadf69973eb93f17a"}, - {file = "coverage-7.11.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:587c38849b853b157706407e9ebdca8fd12f45869edb56defbef2daa5fb0812b"}, - {file = "coverage-7.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b971bdefdd75096163dd4261c74be813c4508477e39ff7b92191dea19f24cd37"}, - {file = "coverage-7.11.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:269bfe913b7d5be12ab13a95f3a76da23cf147be7fa043933320ba5625f0a8de"}, - {file = "coverage-7.11.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:dadbcce51a10c07b7c72b0ce4a25e4b6dcb0c0372846afb8e5b6307a121eb99f"}, - {file = "coverage-7.11.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ed43fa22c6436f7957df036331f8fe4efa7af132054e1844918866cd228af6c"}, - {file = "coverage-7.11.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9516add7256b6713ec08359b7b05aeff8850c98d357784c7205b2e60aa2513fa"}, - {file = "coverage-7.11.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb92e47c92fcbcdc692f428da67db33337fa213756f7adb6a011f7b5a7a20740"}, - {file = "coverage-7.11.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d06f4fc7acf3cabd6d74941d53329e06bab00a8fe10e4df2714f0b134bfc64ef"}, - {file = "coverage-7.11.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:6fbcee1a8f056af07ecd344482f711f563a9eb1c2cad192e87df00338ec3cdb0"}, - {file = "coverage-7.11.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dbbf012be5f32533a490709ad597ad8a8ff80c582a95adc8d62af664e532f9ca"}, - {file = "coverage-7.11.0-cp313-cp313t-win32.whl", hash = "sha256:cee6291bb4fed184f1c2b663606a115c743df98a537c969c3c64b49989da96c2"}, - {file = "coverage-7.11.0-cp313-cp313t-win_amd64.whl", hash = "sha256:a386c1061bf98e7ea4758e4313c0ab5ecf57af341ef0f43a0bf26c2477b5c268"}, - {file = "coverage-7.11.0-cp313-cp313t-win_arm64.whl", hash = "sha256:f9ea02ef40bb83823b2b04964459d281688fe173e20643870bb5d2edf68bc836"}, - {file = "coverage-7.11.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c770885b28fb399aaf2a65bbd1c12bf6f307ffd112d6a76c5231a94276f0c497"}, - {file = "coverage-7.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a3d0e2087dba64c86a6b254f43e12d264b636a39e88c5cc0a01a7c71bcfdab7e"}, - {file = "coverage-7.11.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:73feb83bb41c32811973b8565f3705caf01d928d972b72042b44e97c71fd70d1"}, - {file = "coverage-7.11.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c6f31f281012235ad08f9a560976cc2fc9c95c17604ff3ab20120fe480169bca"}, - {file = "coverage-7.11.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9570ad567f880ef675673992222746a124b9595506826b210fbe0ce3f0499cd"}, - {file = "coverage-7.11.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8badf70446042553a773547a61fecaa734b55dc738cacf20c56ab04b77425e43"}, - {file = "coverage-7.11.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a09c1211959903a479e389685b7feb8a17f59ec5a4ef9afde7650bd5eabc2777"}, - {file = "coverage-7.11.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:5ef83b107f50db3f9ae40f69e34b3bd9337456c5a7fe3461c7abf8b75dd666a2"}, - {file = "coverage-7.11.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f91f927a3215b8907e214af77200250bb6aae36eca3f760f89780d13e495388d"}, - {file = "coverage-7.11.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cdbcd376716d6b7fbfeedd687a6c4be019c5a5671b35f804ba76a4c0a778cba4"}, - {file = "coverage-7.11.0-cp314-cp314-win32.whl", hash = "sha256:bab7ec4bb501743edc63609320aaec8cd9188b396354f482f4de4d40a9d10721"}, - {file = "coverage-7.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:3d4ba9a449e9364a936a27322b20d32d8b166553bfe63059bd21527e681e2fad"}, - {file = "coverage-7.11.0-cp314-cp314-win_arm64.whl", hash = "sha256:ce37f215223af94ef0f75ac68ea096f9f8e8c8ec7d6e8c346ee45c0d363f0479"}, - {file = "coverage-7.11.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:f413ce6e07e0d0dc9c433228727b619871532674b45165abafe201f200cc215f"}, - {file = "coverage-7.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:05791e528a18f7072bf5998ba772fe29db4da1234c45c2087866b5ba4dea710e"}, - {file = "coverage-7.11.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cacb29f420cfeb9283b803263c3b9a068924474ff19ca126ba9103e1278dfa44"}, - {file = "coverage-7.11.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314c24e700d7027ae3ab0d95fbf8d53544fca1f20345fd30cd219b737c6e58d3"}, - {file = "coverage-7.11.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:630d0bd7a293ad2fc8b4b94e5758c8b2536fdf36c05f1681270203e463cbfa9b"}, - {file = "coverage-7.11.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e89641f5175d65e2dbb44db15fe4ea48fade5d5bbb9868fdc2b4fce22f4a469d"}, - {file = "coverage-7.11.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c9f08ea03114a637dab06cedb2e914da9dc67fa52c6015c018ff43fdde25b9c2"}, - {file = "coverage-7.11.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce9f3bde4e9b031eaf1eb61df95c1401427029ea1bfddb8621c1161dcb0fa02e"}, - {file = "coverage-7.11.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:e4dc07e95495923d6fd4d6c27bf70769425b71c89053083843fd78f378558996"}, - {file = "coverage-7.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:424538266794db2861db4922b05d729ade0940ee69dcf0591ce8f69784db0e11"}, - {file = "coverage-7.11.0-cp314-cp314t-win32.whl", hash = "sha256:4c1eeb3fb8eb9e0190bebafd0462936f75717687117339f708f395fe455acc73"}, - {file = "coverage-7.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b56efee146c98dbf2cf5cffc61b9829d1e94442df4d7398b26892a53992d3547"}, - {file = "coverage-7.11.0-cp314-cp314t-win_arm64.whl", hash = "sha256:b5c2705afa83f49bd91962a4094b6b082f94aef7626365ab3f8f4bd159c5acf3"}, - {file = "coverage-7.11.0-py3-none-any.whl", hash = "sha256:4b7589765348d78fb4e5fb6ea35d07564e387da2fc5efff62e0222971f155f68"}, - {file = "coverage-7.11.0.tar.gz", hash = "sha256:167bd504ac1ca2af7ff3b81d245dfea0292c5032ebef9d66cc08a7d28c1b8050"}, -] - -[package.extras] -toml = ["tomli ; python_full_version <= \"3.11.0a6\""] - -[[package]] -name = "cyclonedx-python-lib" -version = "9.1.0" -description = "Python library for CycloneDX" -optional = false -python-versions = "<4.0,>=3.8" -groups = ["dev"] -files = [ - {file = "cyclonedx_python_lib-9.1.0-py3-none-any.whl", hash = "sha256:55693fca8edaecc3363b24af14e82cc6e659eb1e8353e58b587c42652ce0fb52"}, - {file = "cyclonedx_python_lib-9.1.0.tar.gz", hash = "sha256:86935f2c88a7b47a529b93c724dbd3e903bc573f6f8bd977628a7ca1b5dadea1"}, -] - -[package.dependencies] -license-expression = ">=30,<31" -packageurl-python = ">=0.11,<2" -py-serializable = ">=2.0.0,<3.0.0" -sortedcontainers = ">=2.4.0,<3.0.0" - -[package.extras] -json-validation = ["jsonschema[format] (>=4.18,<5.0)"] -validation = ["jsonschema[format] (>=4.18,<5.0)", "lxml (>=4,<6)"] -xml-validation = ["lxml (>=4,<6)"] - -[[package]] -name = "cyclopts" -version = "4.2.1" -description = "Intuitive, easy CLIs based on type hints." -optional = false -python-versions = ">=3.10" -groups = ["dev"] -files = [ - {file = "cyclopts-4.2.1-py3-none-any.whl", hash = "sha256:17a801faa814988b0307385ef8aaeb6b14b4d64473015a2d66bde9ea13f14d9c"}, - {file = "cyclopts-4.2.1.tar.gz", hash = "sha256:49bb4c35644e7a9658f706ade4cf1a9958834b2dca4425e2fafecf8a0537fac7"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -docstring-parser = ">=0.15,<4.0" -rich = ">=13.6.0" -rich-rst = ">=1.3.1,<2.0.0" - -[package.extras] -debug = ["ipdb (>=0.13.9)", "line-profiler (>=3.5.1)"] -dev = ["coverage[toml] (>=5.1)", "pre-commit (>=2.16.0)", "pydantic (>=2.11.2,<3.0.0)", "pytest (>=8.2.0)", "pytest-cov (>=3.0.0)", "pytest-mock (>=3.7.0)", "pyyaml (>=6.0.1)", "toml (>=0.10.2,<1.0.0)", "trio (>=0.10.0)"] -docs = ["gitpython (>=3.1.31)", "myst-parser[linkify] (>=3.0.1,<5.0.0)", "sphinx (>=7.4.7,<8.2.0)", "sphinx-autodoc-typehints (>=1.25.2,<4.0.0)", "sphinx-copybutton (>=0.5,<1.0)", "sphinx-rtd-dark-mode (>=1.3.0,<2.0.0)", "sphinx-rtd-theme (>=3.0.0,<4.0.0)"] -toml = ["tomli (>=2.0.0) ; python_version < \"3.11\""] -trio = ["trio (>=0.10.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - -[[package]] -name = "distlib" -version = "0.4.0" -description = "Distribution utilities" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, - {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, -] - -[[package]] -name = "docstring-parser" -version = "0.17.0" -description = "Parse Python docstrings in reST, Google and Numpydoc format" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708"}, - {file = "docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912"}, -] - -[package.extras] -dev = ["pre-commit (>=2.16.0) ; python_version >= \"3.9\"", "pydoctor (>=25.4.0)", "pytest"] -docs = ["pydoctor (>=25.4.0)"] -test = ["pytest"] - -[[package]] -name = "docutils" -version = "0.22.2" -description = "Docutils -- Python Documentation Utilities" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "docutils-0.22.2-py3-none-any.whl", hash = "sha256:b0e98d679283fc3bb0ead8a5da7f501baa632654e7056e9c5846842213d674d8"}, - {file = "docutils-0.22.2.tar.gz", hash = "sha256:9fdb771707c8784c8f2728b67cb2c691305933d68137ef95a75db5f4dfbc213d"}, -] - -[[package]] -name = "filelock" -version = "3.20.0" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.10" -groups = ["dev"] -files = [ - {file = "filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2"}, - {file = "filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4"}, -] - -[[package]] -name = "frozenlist" -version = "1.8.0" -description = "A list-like structure which implements collections.abc.MutableSequence" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011"}, - {file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565"}, - {file = "frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad"}, - {file = "frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f57fb59d9f385710aa7060e89410aeb5058b99e62f4d16b08b91986b9a2140c2"}, - {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:799345ab092bee59f01a915620b5d014698547afd011e691a208637312db9186"}, - {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c23c3ff005322a6e16f71bf8692fcf4d5a304aaafe1e262c98c6d4adc7be863e"}, - {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a76ea0f0b9dfa06f254ee06053d93a600865b3274358ca48a352ce4f0798450"}, - {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c7366fe1418a6133d5aa824ee53d406550110984de7637d65a178010f759c6ef"}, - {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:13d23a45c4cebade99340c4165bd90eeb4a56c6d8a9d8aa49568cac19a6d0dc4"}, - {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4a3408834f65da56c83528fb52ce7911484f0d1eaf7b761fc66001db1646eff"}, - {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42145cd2748ca39f32801dad54aeea10039da6f86e303659db90db1c4b614c8c"}, - {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e2de870d16a7a53901e41b64ffdf26f2fbb8917b3e6ebf398098d72c5b20bd7f"}, - {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:20e63c9493d33ee48536600d1a5c95eefc870cd71e7ab037763d1fbb89cc51e7"}, - {file = "frozenlist-1.8.0-cp310-cp310-win32.whl", hash = "sha256:adbeebaebae3526afc3c96fad434367cafbfd1b25d72369a9e5858453b1bb71a"}, - {file = "frozenlist-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:667c3777ca571e5dbeb76f331562ff98b957431df140b54c85fd4d52eea8d8f6"}, - {file = "frozenlist-1.8.0-cp310-cp310-win_arm64.whl", hash = "sha256:80f85f0a7cc86e7a54c46d99c9e1318ff01f4687c172ede30fd52d19d1da1c8e"}, - {file = "frozenlist-1.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84"}, - {file = "frozenlist-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9"}, - {file = "frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93"}, - {file = "frozenlist-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2552f44204b744fba866e573be4c1f9048d6a324dfe14475103fd51613eb1d1f"}, - {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e7c38f250991e48a9a73e6423db1bb9dd14e722a10f6b8bb8e16a0f55f695"}, - {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8585e3bb2cdea02fc88ffa245069c36555557ad3609e83be0ec71f54fd4abb52"}, - {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:edee74874ce20a373d62dc28b0b18b93f645633c2943fd90ee9d898550770581"}, - {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c9a63152fe95756b85f31186bddf42e4c02c6321207fd6601a1c89ebac4fe567"}, - {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6db2185db9be0a04fecf2f241c70b63b1a242e2805be291855078f2b404dd6b"}, - {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f4be2e3d8bc8aabd566f8d5b8ba7ecc09249d74ba3c9ed52e54dc23a293f0b92"}, - {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c8d1634419f39ea6f5c427ea2f90ca85126b54b50837f31497f3bf38266e853d"}, - {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a7fa382a4a223773ed64242dbe1c9c326ec09457e6b8428efb4118c685c3dfd"}, - {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:11847b53d722050808926e785df837353bd4d75f1d494377e59b23594d834967"}, - {file = "frozenlist-1.8.0-cp311-cp311-win32.whl", hash = "sha256:27c6e8077956cf73eadd514be8fb04d77fc946a7fe9f7fe167648b0b9085cc25"}, - {file = "frozenlist-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac913f8403b36a2c8610bbfd25b8013488533e71e62b4b4adce9c86c8cea905b"}, - {file = "frozenlist-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:d4d3214a0f8394edfa3e303136d0575eece0745ff2b47bd2cb2e66dd92d4351a"}, - {file = "frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1"}, - {file = "frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b"}, - {file = "frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4"}, - {file = "frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383"}, - {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4"}, - {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8"}, - {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b"}, - {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52"}, - {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29"}, - {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3"}, - {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143"}, - {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608"}, - {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa"}, - {file = "frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf"}, - {file = "frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746"}, - {file = "frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd"}, - {file = "frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a"}, - {file = "frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7"}, - {file = "frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40"}, - {file = "frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027"}, - {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822"}, - {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121"}, - {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5"}, - {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e"}, - {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11"}, - {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1"}, - {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1"}, - {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8"}, - {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed"}, - {file = "frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496"}, - {file = "frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231"}, - {file = "frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62"}, - {file = "frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94"}, - {file = "frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c"}, - {file = "frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52"}, - {file = "frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51"}, - {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65"}, - {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82"}, - {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714"}, - {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d"}, - {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506"}, - {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51"}, - {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e"}, - {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0"}, - {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41"}, - {file = "frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b"}, - {file = "frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888"}, - {file = "frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042"}, - {file = "frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0"}, - {file = "frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f"}, - {file = "frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c"}, - {file = "frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2"}, - {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8"}, - {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686"}, - {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e"}, - {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a"}, - {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128"}, - {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f"}, - {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7"}, - {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30"}, - {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7"}, - {file = "frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806"}, - {file = "frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0"}, - {file = "frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b"}, - {file = "frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d"}, - {file = "frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed"}, - {file = "frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930"}, - {file = "frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c"}, - {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24"}, - {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37"}, - {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a"}, - {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2"}, - {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef"}, - {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe"}, - {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8"}, - {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a"}, - {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e"}, - {file = "frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df"}, - {file = "frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd"}, - {file = "frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79"}, - {file = "frozenlist-1.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d8b7138e5cd0647e4523d6685b0eac5d4be9a184ae9634492f25c6eb38c12a47"}, - {file = "frozenlist-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a6483e309ca809f1efd154b4d37dc6d9f61037d6c6a81c2dc7a15cb22c8c5dca"}, - {file = "frozenlist-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b9290cf81e95e93fdf90548ce9d3c1211cf574b8e3f4b3b7cb0537cf2227068"}, - {file = "frozenlist-1.8.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:59a6a5876ca59d1b63af8cd5e7ffffb024c3dc1e9cf9301b21a2e76286505c95"}, - {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6dc4126390929823e2d2d9dc79ab4046ed74680360fc5f38b585c12c66cdf459"}, - {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:332db6b2563333c5671fecacd085141b5800cb866be16d5e3eb15a2086476675"}, - {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9ff15928d62a0b80bb875655c39bf517938c7d589554cbd2669be42d97c2cb61"}, - {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7bf6cdf8e07c8151fba6fe85735441240ec7f619f935a5205953d58009aef8c6"}, - {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:48e6d3f4ec5c7273dfe83ff27c91083c6c9065af655dc2684d2c200c94308bb5"}, - {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:1a7607e17ad33361677adcd1443edf6f5da0ce5e5377b798fba20fae194825f3"}, - {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3a935c3a4e89c733303a2d5a7c257ea44af3a56c8202df486b7f5de40f37e1"}, - {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:940d4a017dbfed9daf46a3b086e1d2167e7012ee297fef9e1c545c4d022f5178"}, - {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b9be22a69a014bc47e78072d0ecae716f5eb56c15238acca0f43d6eb8e4a5bda"}, - {file = "frozenlist-1.8.0-cp39-cp39-win32.whl", hash = "sha256:1aa77cb5697069af47472e39612976ed05343ff2e84a3dcf15437b232cbfd087"}, - {file = "frozenlist-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:7398c222d1d405e796970320036b1b563892b65809d9e5261487bb2c7f7b5c6a"}, - {file = "frozenlist-1.8.0-cp39-cp39-win_arm64.whl", hash = "sha256:b4f3b365f31c6cd4af24545ca0a244a53688cad8834e32f56831c4923b50a103"}, - {file = "frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d"}, - {file = "frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad"}, -] - -[[package]] -name = "h11" -version = "0.16.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -files = [ - {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, - {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -files = [ - {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, - {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.16" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.28.1" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -files = [ - {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, - {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" - -[package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "identify" -version = "2.6.15" -description = "File identification library for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "identify-2.6.15-py2.py3-none-any.whl", hash = "sha256:1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757"}, - {file = "identify-2.6.15.tar.gz", hash = "sha256:e4f4864b96c6557ef2a1e1c951771838f4edc9df3a72ec7118b338801b11c7bf"}, -] - -[package.extras] -license = ["ukkonen"] - -[[package]] -name = "idna" -version = "3.11" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -files = [ - {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, - {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "immutabledict" -version = "4.2.2" -description = "Immutable wrapper around dictionaries (a fork of frozendict)" -optional = false -python-versions = "<4.0,>=3.8" -groups = ["dev"] -files = [ - {file = "immutabledict-4.2.2-py3-none-any.whl", hash = "sha256:97c31d098a2c850e93a958badeef765e4736ed7942ec73e439facd764a3a7217"}, - {file = "immutabledict-4.2.2.tar.gz", hash = "sha256:cb6ed3090df593148f94cb407d218ca526fd2639694afdb553dc4f50ce6feeca"}, -] - -[[package]] -name = "iniconfig" -version = "2.3.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.10" -groups = ["dev"] -files = [ - {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, - {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, -] - -[[package]] -name = "license-expression" -version = "30.4.4" -description = "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4"}, - {file = "license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd"}, -] - -[package.dependencies] -"boolean.py" = ">=4.0" - -[package.extras] -dev = ["Sphinx (>=5.0.2)", "doc8 (>=0.11.2)", "pytest (>=7.0.1)", "pytest-xdist (>=2)", "ruff", "sphinx-autobuild", "sphinx-copybutton", "sphinx-reredirects (>=0.1.2)", "sphinx-rtd-dark-mode (>=1.3.0)", "sphinx-rtd-theme (>=1.0.0)", "sphinxcontrib-apidoc (>=0.4.0)", "twine"] - -[[package]] -name = "lsprotocol" -version = "2025.0.0" -description = "Python types for Language Server Protocol." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "lsprotocol-2025.0.0-py3-none-any.whl", hash = "sha256:f9d78f25221f2a60eaa4a96d3b4ffae011b107537facee61d3da3313880995c7"}, - {file = "lsprotocol-2025.0.0.tar.gz", hash = "sha256:e879da2b9301e82cfc3e60d805630487ac2f7ab17492f4f5ba5aaba94fe56c29"}, -] - -[package.dependencies] -attrs = ">=21.3.0" -cattrs = "!=23.2.1" - -[[package]] -name = "markdown-it-py" -version = "4.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false -python-versions = ">=3.10" -groups = ["dev"] -files = [ - {file = "markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"}, - {file = "markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3"}, -] - -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "markdown-it-pyrs", "mistletoe (>=1.0,<2.0)", "mistune (>=3.0,<4.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins (>=0.5.0)"] -profiling = ["gprof2dot"] -rtd = ["ipykernel", "jupyter_sphinx", "mdit-py-plugins (>=0.5.0)", "myst-parser", "pyyaml", "sphinx", "sphinx-book-theme (>=1.0,<2.0)", "sphinx-copybutton", "sphinx-design"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions", "requests"] - -[[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, -] - -[[package]] -name = "msgpack" -version = "1.1.2" -description = "MessagePack serializer" -optional = false -python-versions = ">=3.9" -groups = ["main", "dev"] -files = [ - {file = "msgpack-1.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0051fffef5a37ca2cd16978ae4f0aef92f164df86823871b5162812bebecd8e2"}, - {file = "msgpack-1.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a605409040f2da88676e9c9e5853b3449ba8011973616189ea5ee55ddbc5bc87"}, - {file = "msgpack-1.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b696e83c9f1532b4af884045ba7f3aa741a63b2bc22617293a2c6a7c645f251"}, - {file = "msgpack-1.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:365c0bbe981a27d8932da71af63ef86acc59ed5c01ad929e09a0b88c6294e28a"}, - {file = "msgpack-1.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:41d1a5d875680166d3ac5c38573896453bbbea7092936d2e107214daf43b1d4f"}, - {file = "msgpack-1.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:354e81bcdebaab427c3df4281187edc765d5d76bfb3a7c125af9da7a27e8458f"}, - {file = "msgpack-1.1.2-cp310-cp310-win32.whl", hash = "sha256:e64c8d2f5e5d5fda7b842f55dec6133260ea8f53c4257d64494c534f306bf7a9"}, - {file = "msgpack-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:db6192777d943bdaaafb6ba66d44bf65aa0e9c5616fa1d2da9bb08828c6b39aa"}, - {file = "msgpack-1.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2e86a607e558d22985d856948c12a3fa7b42efad264dca8a3ebbcfa2735d786c"}, - {file = "msgpack-1.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:283ae72fc89da59aa004ba147e8fc2f766647b1251500182fac0350d8af299c0"}, - {file = "msgpack-1.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:61c8aa3bd513d87c72ed0b37b53dd5c5a0f58f2ff9f26e1555d3bd7948fb7296"}, - {file = "msgpack-1.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:454e29e186285d2ebe65be34629fa0e8605202c60fbc7c4c650ccd41870896ef"}, - {file = "msgpack-1.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7bc8813f88417599564fafa59fd6f95be417179f76b40325b500b3c98409757c"}, - {file = "msgpack-1.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bafca952dc13907bdfdedfc6a5f579bf4f292bdd506fadb38389afa3ac5b208e"}, - {file = "msgpack-1.1.2-cp311-cp311-win32.whl", hash = "sha256:602b6740e95ffc55bfb078172d279de3773d7b7db1f703b2f1323566b878b90e"}, - {file = "msgpack-1.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:d198d275222dc54244bf3327eb8cbe00307d220241d9cec4d306d49a44e85f68"}, - {file = "msgpack-1.1.2-cp311-cp311-win_arm64.whl", hash = "sha256:86f8136dfa5c116365a8a651a7d7484b65b13339731dd6faebb9a0242151c406"}, - {file = "msgpack-1.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:70a0dff9d1f8da25179ffcf880e10cf1aad55fdb63cd59c9a49a1b82290062aa"}, - {file = "msgpack-1.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:446abdd8b94b55c800ac34b102dffd2f6aa0ce643c55dfc017ad89347db3dbdb"}, - {file = "msgpack-1.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c63eea553c69ab05b6747901b97d620bb2a690633c77f23feb0c6a947a8a7b8f"}, - {file = "msgpack-1.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:372839311ccf6bdaf39b00b61288e0557916c3729529b301c52c2d88842add42"}, - {file = "msgpack-1.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2929af52106ca73fcb28576218476ffbb531a036c2adbcf54a3664de124303e9"}, - {file = "msgpack-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be52a8fc79e45b0364210eef5234a7cf8d330836d0a64dfbb878efa903d84620"}, - {file = "msgpack-1.1.2-cp312-cp312-win32.whl", hash = "sha256:1fff3d825d7859ac888b0fbda39a42d59193543920eda9d9bea44d958a878029"}, - {file = "msgpack-1.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:1de460f0403172cff81169a30b9a92b260cb809c4cb7e2fc79ae8d0510c78b6b"}, - {file = "msgpack-1.1.2-cp312-cp312-win_arm64.whl", hash = "sha256:be5980f3ee0e6bd44f3a9e9dea01054f175b50c3e6cdb692bc9424c0bbb8bf69"}, - {file = "msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4efd7b5979ccb539c221a4c4e16aac1a533efc97f3b759bb5a5ac9f6d10383bf"}, - {file = "msgpack-1.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:42eefe2c3e2af97ed470eec850facbe1b5ad1d6eacdbadc42ec98e7dcf68b4b7"}, - {file = "msgpack-1.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1fdf7d83102bf09e7ce3357de96c59b627395352a4024f6e2458501f158bf999"}, - {file = "msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fac4be746328f90caa3cd4bc67e6fe36ca2bf61d5c6eb6d895b6527e3f05071e"}, - {file = "msgpack-1.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fffee09044073e69f2bad787071aeec727183e7580443dfeb8556cbf1978d162"}, - {file = "msgpack-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5928604de9b032bc17f5099496417f113c45bc6bc21b5c6920caf34b3c428794"}, - {file = "msgpack-1.1.2-cp313-cp313-win32.whl", hash = "sha256:a7787d353595c7c7e145e2331abf8b7ff1e6673a6b974ded96e6d4ec09f00c8c"}, - {file = "msgpack-1.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:a465f0dceb8e13a487e54c07d04ae3ba131c7c5b95e2612596eafde1dccf64a9"}, - {file = "msgpack-1.1.2-cp313-cp313-win_arm64.whl", hash = "sha256:e69b39f8c0aa5ec24b57737ebee40be647035158f14ed4b40e6f150077e21a84"}, - {file = "msgpack-1.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e23ce8d5f7aa6ea6d2a2b326b4ba46c985dbb204523759984430db7114f8aa00"}, - {file = "msgpack-1.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:6c15b7d74c939ebe620dd8e559384be806204d73b4f9356320632d783d1f7939"}, - {file = "msgpack-1.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99e2cb7b9031568a2a5c73aa077180f93dd2e95b4f8d3b8e14a73ae94a9e667e"}, - {file = "msgpack-1.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:180759d89a057eab503cf62eeec0aa61c4ea1200dee709f3a8e9397dbb3b6931"}, - {file = "msgpack-1.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:04fb995247a6e83830b62f0b07bf36540c213f6eac8e851166d8d86d83cbd014"}, - {file = "msgpack-1.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8e22ab046fa7ede9e36eeb4cfad44d46450f37bb05d5ec482b02868f451c95e2"}, - {file = "msgpack-1.1.2-cp314-cp314-win32.whl", hash = "sha256:80a0ff7d4abf5fecb995fcf235d4064b9a9a8a40a3ab80999e6ac1e30b702717"}, - {file = "msgpack-1.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:9ade919fac6a3e7260b7f64cea89df6bec59104987cbea34d34a2fa15d74310b"}, - {file = "msgpack-1.1.2-cp314-cp314-win_arm64.whl", hash = "sha256:59415c6076b1e30e563eb732e23b994a61c159cec44deaf584e5cc1dd662f2af"}, - {file = "msgpack-1.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:897c478140877e5307760b0ea66e0932738879e7aa68144d9b78ea4c8302a84a"}, - {file = "msgpack-1.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a668204fa43e6d02f89dbe79a30b0d67238d9ec4c5bd8a940fc3a004a47b721b"}, - {file = "msgpack-1.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5559d03930d3aa0f3aacb4c42c776af1a2ace2611871c84a75afe436695e6245"}, - {file = "msgpack-1.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:70c5a7a9fea7f036b716191c29047374c10721c389c21e9ffafad04df8c52c90"}, - {file = "msgpack-1.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f2cb069d8b981abc72b41aea1c580ce92d57c673ec61af4c500153a626cb9e20"}, - {file = "msgpack-1.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d62ce1f483f355f61adb5433ebfd8868c5f078d1a52d042b0a998682b4fa8c27"}, - {file = "msgpack-1.1.2-cp314-cp314t-win32.whl", hash = "sha256:1d1418482b1ee984625d88aa9585db570180c286d942da463533b238b98b812b"}, - {file = "msgpack-1.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:5a46bf7e831d09470ad92dff02b8b1ac92175ca36b087f904a0519857c6be3ff"}, - {file = "msgpack-1.1.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d99ef64f349d5ec3293688e91486c5fdb925ed03807f64d98d205d2713c60b46"}, - {file = "msgpack-1.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ea5405c46e690122a76531ab97a079e184c0daf491e588592d6a23d3e32af99e"}, - {file = "msgpack-1.1.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9fba231af7a933400238cb357ecccf8ab5d51535ea95d94fc35b7806218ff844"}, - {file = "msgpack-1.1.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a8f6e7d30253714751aa0b0c84ae28948e852ee7fb0524082e6716769124bc23"}, - {file = "msgpack-1.1.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:94fd7dc7d8cb0a54432f296f2246bc39474e017204ca6f4ff345941d4ed285a7"}, - {file = "msgpack-1.1.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:350ad5353a467d9e3b126d8d1b90fe05ad081e2e1cef5753f8c345217c37e7b8"}, - {file = "msgpack-1.1.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6bde749afe671dc44893f8d08e83bf475a1a14570d67c4bb5cec5573463c8833"}, - {file = "msgpack-1.1.2-cp39-cp39-win32.whl", hash = "sha256:ad09b984828d6b7bb52d1d1d0c9be68ad781fa004ca39216c8a1e63c0f34ba3c"}, - {file = "msgpack-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:67016ae8c8965124fdede9d3769528ad8284f14d635337ffa6a713a580f6c030"}, - {file = "msgpack-1.1.2.tar.gz", hash = "sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e"}, -] - -[[package]] -name = "multidict" -version = "6.7.0" -description = "multidict implementation" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "multidict-6.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9f474ad5acda359c8758c8accc22032c6abe6dc87a8be2440d097785e27a9349"}, - {file = "multidict-6.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b7a9db5a870f780220e931d0002bbfd88fb53aceb6293251e2c839415c1b20e"}, - {file = "multidict-6.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:03ca744319864e92721195fa28c7a3b2bc7b686246b35e4078c1e4d0eb5466d3"}, - {file = "multidict-6.7.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f0e77e3c0008bc9316e662624535b88d360c3a5d3f81e15cf12c139a75250046"}, - {file = "multidict-6.7.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08325c9e5367aa379a3496aa9a022fe8837ff22e00b94db256d3a1378c76ab32"}, - {file = "multidict-6.7.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e2862408c99f84aa571ab462d25236ef9cb12a602ea959ba9c9009a54902fc73"}, - {file = "multidict-6.7.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4d72a9a2d885f5c208b0cb91ff2ed43636bb7e345ec839ff64708e04f69a13cc"}, - {file = "multidict-6.7.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:478cc36476687bac1514d651cbbaa94b86b0732fb6855c60c673794c7dd2da62"}, - {file = "multidict-6.7.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6843b28b0364dc605f21481c90fadb5f60d9123b442eb8a726bb74feef588a84"}, - {file = "multidict-6.7.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23bfeee5316266e5ee2d625df2d2c602b829435fc3a235c2ba2131495706e4a0"}, - {file = "multidict-6.7.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:680878b9f3d45c31e1f730eef731f9b0bc1da456155688c6745ee84eb818e90e"}, - {file = "multidict-6.7.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:eb866162ef2f45063acc7a53a88ef6fe8bf121d45c30ea3c9cd87ce7e191a8d4"}, - {file = "multidict-6.7.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:df0e3bf7993bdbeca5ac25aa859cf40d39019e015c9c91809ba7093967f7a648"}, - {file = "multidict-6.7.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:661709cdcd919a2ece2234f9bae7174e5220c80b034585d7d8a755632d3e2111"}, - {file = "multidict-6.7.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:096f52730c3fb8ed419db2d44391932b63891b2c5ed14850a7e215c0ba9ade36"}, - {file = "multidict-6.7.0-cp310-cp310-win32.whl", hash = "sha256:afa8a2978ec65d2336305550535c9c4ff50ee527914328c8677b3973ade52b85"}, - {file = "multidict-6.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:b15b3afff74f707b9275d5ba6a91ae8f6429c3ffb29bbfd216b0b375a56f13d7"}, - {file = "multidict-6.7.0-cp310-cp310-win_arm64.whl", hash = "sha256:4b73189894398d59131a66ff157837b1fafea9974be486d036bb3d32331fdbf0"}, - {file = "multidict-6.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4d409aa42a94c0b3fa617708ef5276dfe81012ba6753a0370fcc9d0195d0a1fc"}, - {file = "multidict-6.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:14c9e076eede3b54c636f8ce1c9c252b5f057c62131211f0ceeec273810c9721"}, - {file = "multidict-6.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c09703000a9d0fa3c3404b27041e574cc7f4df4c6563873246d0e11812a94b6"}, - {file = "multidict-6.7.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a265acbb7bb33a3a2d626afbe756371dce0279e7b17f4f4eda406459c2b5ff1c"}, - {file = "multidict-6.7.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51cb455de290ae462593e5b1cb1118c5c22ea7f0d3620d9940bf695cea5a4bd7"}, - {file = "multidict-6.7.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:db99677b4457c7a5c5a949353e125ba72d62b35f74e26da141530fbb012218a7"}, - {file = "multidict-6.7.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f470f68adc395e0183b92a2f4689264d1ea4b40504a24d9882c27375e6662bb9"}, - {file = "multidict-6.7.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0db4956f82723cc1c270de9c6e799b4c341d327762ec78ef82bb962f79cc07d8"}, - {file = "multidict-6.7.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3e56d780c238f9e1ae66a22d2adf8d16f485381878250db8d496623cd38b22bd"}, - {file = "multidict-6.7.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d14baca2ee12c1a64740d4531356ba50b82543017f3ad6de0deb943c5979abb"}, - {file = "multidict-6.7.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:295a92a76188917c7f99cda95858c822f9e4aae5824246bba9b6b44004ddd0a6"}, - {file = "multidict-6.7.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:39f1719f57adbb767ef592a50ae5ebb794220d1188f9ca93de471336401c34d2"}, - {file = "multidict-6.7.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0a13fb8e748dfc94749f622de065dd5c1def7e0d2216dba72b1d8069a389c6ff"}, - {file = "multidict-6.7.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e3aa16de190d29a0ea1b48253c57d99a68492c8dd8948638073ab9e74dc9410b"}, - {file = "multidict-6.7.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a048ce45dcdaaf1defb76b2e684f997fb5abf74437b6cb7b22ddad934a964e34"}, - {file = "multidict-6.7.0-cp311-cp311-win32.whl", hash = "sha256:a90af66facec4cebe4181b9e62a68be65e45ac9b52b67de9eec118701856e7ff"}, - {file = "multidict-6.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:95b5ffa4349df2887518bb839409bcf22caa72d82beec453216802f475b23c81"}, - {file = "multidict-6.7.0-cp311-cp311-win_arm64.whl", hash = "sha256:329aa225b085b6f004a4955271a7ba9f1087e39dcb7e65f6284a988264a63912"}, - {file = "multidict-6.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8a3862568a36d26e650a19bb5cbbba14b71789032aebc0423f8cc5f150730184"}, - {file = "multidict-6.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:960c60b5849b9b4f9dcc9bea6e3626143c252c74113df2c1540aebce70209b45"}, - {file = "multidict-6.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2049be98fb57a31b4ccf870bf377af2504d4ae35646a19037ec271e4c07998aa"}, - {file = "multidict-6.7.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0934f3843a1860dd465d38895c17fce1f1cb37295149ab05cd1b9a03afacb2a7"}, - {file = "multidict-6.7.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b3e34f3a1b8131ba06f1a73adab24f30934d148afcd5f5de9a73565a4404384e"}, - {file = "multidict-6.7.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:efbb54e98446892590dc2458c19c10344ee9a883a79b5cec4bc34d6656e8d546"}, - {file = "multidict-6.7.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a35c5fc61d4f51eb045061e7967cfe3123d622cd500e8868e7c0c592a09fedc4"}, - {file = "multidict-6.7.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29fe6740ebccba4175af1b9b87bf553e9c15cd5868ee967e010efcf94e4fd0f1"}, - {file = "multidict-6.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:123e2a72e20537add2f33a79e605f6191fba2afda4cbb876e35c1a7074298a7d"}, - {file = "multidict-6.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b284e319754366c1aee2267a2036248b24eeb17ecd5dc16022095e747f2f4304"}, - {file = "multidict-6.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:803d685de7be4303b5a657b76e2f6d1240e7e0a8aa2968ad5811fa2285553a12"}, - {file = "multidict-6.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c04a328260dfd5db8c39538f999f02779012268f54614902d0afc775d44e0a62"}, - {file = "multidict-6.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8a19cdb57cd3df4cd865849d93ee14920fb97224300c88501f16ecfa2604b4e0"}, - {file = "multidict-6.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b2fd74c52accced7e75de26023b7dccee62511a600e62311b918ec5c168fc2a"}, - {file = "multidict-6.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3e8bfdd0e487acf992407a140d2589fe598238eaeffa3da8448d63a63cd363f8"}, - {file = "multidict-6.7.0-cp312-cp312-win32.whl", hash = "sha256:dd32a49400a2c3d52088e120ee00c1e3576cbff7e10b98467962c74fdb762ed4"}, - {file = "multidict-6.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:92abb658ef2d7ef22ac9f8bb88e8b6c3e571671534e029359b6d9e845923eb1b"}, - {file = "multidict-6.7.0-cp312-cp312-win_arm64.whl", hash = "sha256:490dab541a6a642ce1a9d61a4781656b346a55c13038f0b1244653828e3a83ec"}, - {file = "multidict-6.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bee7c0588aa0076ce77c0ea5d19a68d76ad81fcd9fe8501003b9a24f9d4000f6"}, - {file = "multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7ef6b61cad77091056ce0e7ce69814ef72afacb150b7ac6a3e9470def2198159"}, - {file = "multidict-6.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c0359b1ec12b1d6849c59f9d319610b7f20ef990a6d454ab151aa0e3b9f78ca"}, - {file = "multidict-6.7.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cd240939f71c64bd658f186330603aac1a9a81bf6273f523fca63673cb7378a8"}, - {file = "multidict-6.7.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60a4d75718a5efa473ebd5ab685786ba0c67b8381f781d1be14da49f1a2dc60"}, - {file = "multidict-6.7.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53a42d364f323275126aff81fb67c5ca1b7a04fda0546245730a55c8c5f24bc4"}, - {file = "multidict-6.7.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3b29b980d0ddbecb736735ee5bef69bb2ddca56eff603c86f3f29a1128299b4f"}, - {file = "multidict-6.7.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f8a93b1c0ed2d04b97a5e9336fd2d33371b9a6e29ab7dd6503d63407c20ffbaf"}, - {file = "multidict-6.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ff96e8815eecacc6645da76c413eb3b3d34cfca256c70b16b286a687d013c32"}, - {file = "multidict-6.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7516c579652f6a6be0e266aec0acd0db80829ca305c3d771ed898538804c2036"}, - {file = "multidict-6.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:040f393368e63fb0f3330e70c26bfd336656bed925e5cbe17c9da839a6ab13ec"}, - {file = "multidict-6.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b3bc26a951007b1057a1c543af845f1c7e3e71cc240ed1ace7bf4484aa99196e"}, - {file = "multidict-6.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7b022717c748dd1992a83e219587aabe45980d88969f01b316e78683e6285f64"}, - {file = "multidict-6.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:9600082733859f00d79dee64effc7aef1beb26adb297416a4ad2116fd61374bd"}, - {file = "multidict-6.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:94218fcec4d72bc61df51c198d098ce2b378e0ccbac41ddbed5ef44092913288"}, - {file = "multidict-6.7.0-cp313-cp313-win32.whl", hash = "sha256:a37bd74c3fa9d00be2d7b8eca074dc56bd8077ddd2917a839bd989612671ed17"}, - {file = "multidict-6.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:30d193c6cc6d559db42b6bcec8a5d395d34d60c9877a0b71ecd7c204fcf15390"}, - {file = "multidict-6.7.0-cp313-cp313-win_arm64.whl", hash = "sha256:ea3334cabe4d41b7ccd01e4d349828678794edbc2d3ae97fc162a3312095092e"}, - {file = "multidict-6.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ad9ce259f50abd98a1ca0aa6e490b58c316a0fce0617f609723e40804add2c00"}, - {file = "multidict-6.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07f5594ac6d084cbb5de2df218d78baf55ef150b91f0ff8a21cc7a2e3a5a58eb"}, - {file = "multidict-6.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0591b48acf279821a579282444814a2d8d0af624ae0bc600aa4d1b920b6e924b"}, - {file = "multidict-6.7.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:749a72584761531d2b9467cfbdfd29487ee21124c304c4b6cb760d8777b27f9c"}, - {file = "multidict-6.7.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b4c3d199f953acd5b446bf7c0de1fe25d94e09e79086f8dc2f48a11a129cdf1"}, - {file = "multidict-6.7.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9fb0211dfc3b51efea2f349ec92c114d7754dd62c01f81c3e32b765b70c45c9b"}, - {file = "multidict-6.7.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a027ec240fe73a8d6281872690b988eed307cd7d91b23998ff35ff577ca688b5"}, - {file = "multidict-6.7.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1d964afecdf3a8288789df2f5751dc0a8261138c3768d9af117ed384e538fad"}, - {file = "multidict-6.7.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:caf53b15b1b7df9fbd0709aa01409000a2b4dd03a5f6f5cc548183c7c8f8b63c"}, - {file = "multidict-6.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:654030da3197d927f05a536a66186070e98765aa5142794c9904555d3a9d8fb5"}, - {file = "multidict-6.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:2090d3718829d1e484706a2f525e50c892237b2bf9b17a79b059cb98cddc2f10"}, - {file = "multidict-6.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d2cfeec3f6f45651b3d408c4acec0ebf3daa9bc8a112a084206f5db5d05b754"}, - {file = "multidict-6.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:4ef089f985b8c194d341eb2c24ae6e7408c9a0e2e5658699c92f497437d88c3c"}, - {file = "multidict-6.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e93a0617cd16998784bf4414c7e40f17a35d2350e5c6f0bd900d3a8e02bd3762"}, - {file = "multidict-6.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f0feece2ef8ebc42ed9e2e8c78fc4aa3cf455733b507c09ef7406364c94376c6"}, - {file = "multidict-6.7.0-cp313-cp313t-win32.whl", hash = "sha256:19a1d55338ec1be74ef62440ca9e04a2f001a04d0cc49a4983dc320ff0f3212d"}, - {file = "multidict-6.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3da4fb467498df97e986af166b12d01f05d2e04f978a9c1c680ea1988e0bc4b6"}, - {file = "multidict-6.7.0-cp313-cp313t-win_arm64.whl", hash = "sha256:b4121773c49a0776461f4a904cdf6264c88e42218aaa8407e803ca8025872792"}, - {file = "multidict-6.7.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3bab1e4aff7adaa34410f93b1f8e57c4b36b9af0426a76003f441ee1d3c7e842"}, - {file = "multidict-6.7.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b8512bac933afc3e45fb2b18da8e59b78d4f408399a960339598374d4ae3b56b"}, - {file = "multidict-6.7.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:79dcf9e477bc65414ebfea98ffd013cb39552b5ecd62908752e0e413d6d06e38"}, - {file = "multidict-6.7.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:31bae522710064b5cbeddaf2e9f32b1abab70ac6ac91d42572502299e9953128"}, - {file = "multidict-6.7.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a0df7ff02397bb63e2fd22af2c87dfa39e8c7f12947bc524dbdc528282c7e34"}, - {file = "multidict-6.7.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a0222514e8e4c514660e182d5156a415c13ef0aabbd71682fc714e327b95e99"}, - {file = "multidict-6.7.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2397ab4daaf2698eb51a76721e98db21ce4f52339e535725de03ea962b5a3202"}, - {file = "multidict-6.7.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8891681594162635948a636c9fe0ff21746aeb3dd5463f6e25d9bea3a8a39ca1"}, - {file = "multidict-6.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18706cc31dbf402a7945916dd5cddf160251b6dab8a2c5f3d6d5a55949f676b3"}, - {file = "multidict-6.7.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f844a1bbf1d207dd311a56f383f7eda2d0e134921d45751842d8235e7778965d"}, - {file = "multidict-6.7.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d4393e3581e84e5645506923816b9cc81f5609a778c7e7534054091acc64d1c6"}, - {file = "multidict-6.7.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:fbd18dc82d7bf274b37aa48d664534330af744e03bccf696d6f4c6042e7d19e7"}, - {file = "multidict-6.7.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b6234e14f9314731ec45c42fc4554b88133ad53a09092cc48a88e771c125dadb"}, - {file = "multidict-6.7.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:08d4379f9744d8f78d98c8673c06e202ffa88296f009c71bbafe8a6bf847d01f"}, - {file = "multidict-6.7.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9fe04da3f79387f450fd0061d4dd2e45a72749d31bf634aecc9e27f24fdc4b3f"}, - {file = "multidict-6.7.0-cp314-cp314-win32.whl", hash = "sha256:fbafe31d191dfa7c4c51f7a6149c9fb7e914dcf9ffead27dcfd9f1ae382b3885"}, - {file = "multidict-6.7.0-cp314-cp314-win_amd64.whl", hash = "sha256:2f67396ec0310764b9222a1728ced1ab638f61aadc6226f17a71dd9324f9a99c"}, - {file = "multidict-6.7.0-cp314-cp314-win_arm64.whl", hash = "sha256:ba672b26069957ee369cfa7fc180dde1fc6f176eaf1e6beaf61fbebbd3d9c000"}, - {file = "multidict-6.7.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:c1dcc7524066fa918c6a27d61444d4ee7900ec635779058571f70d042d86ed63"}, - {file = "multidict-6.7.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:27e0b36c2d388dc7b6ced3406671b401e84ad7eb0656b8f3a2f46ed0ce483718"}, - {file = "multidict-6.7.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a7baa46a22e77f0988e3b23d4ede5513ebec1929e34ee9495be535662c0dfe2"}, - {file = "multidict-6.7.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7bf77f54997a9166a2f5675d1201520586439424c2511723a7312bdb4bcc034e"}, - {file = "multidict-6.7.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e011555abada53f1578d63389610ac8a5400fc70ce71156b0aa30d326f1a5064"}, - {file = "multidict-6.7.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:28b37063541b897fd6a318007373930a75ca6d6ac7c940dbe14731ffdd8d498e"}, - {file = "multidict-6.7.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05047ada7a2fde2631a0ed706f1fd68b169a681dfe5e4cf0f8e4cb6618bbc2cd"}, - {file = "multidict-6.7.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:716133f7d1d946a4e1b91b1756b23c088881e70ff180c24e864c26192ad7534a"}, - {file = "multidict-6.7.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d1bed1b467ef657f2a0ae62844a607909ef1c6889562de5e1d505f74457d0b96"}, - {file = "multidict-6.7.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ca43bdfa5d37bd6aee89d85e1d0831fb86e25541be7e9d376ead1b28974f8e5e"}, - {file = "multidict-6.7.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:44b546bd3eb645fd26fb949e43c02a25a2e632e2ca21a35e2e132c8105dc8599"}, - {file = "multidict-6.7.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:a6ef16328011d3f468e7ebc326f24c1445f001ca1dec335b2f8e66bed3006394"}, - {file = "multidict-6.7.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:5aa873cbc8e593d361ae65c68f85faadd755c3295ea2c12040ee146802f23b38"}, - {file = "multidict-6.7.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:3d7b6ccce016e29df4b7ca819659f516f0bc7a4b3efa3bb2012ba06431b044f9"}, - {file = "multidict-6.7.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:171b73bd4ee683d307599b66793ac80981b06f069b62eea1c9e29c9241aa66b0"}, - {file = "multidict-6.7.0-cp314-cp314t-win32.whl", hash = "sha256:b2d7f80c4e1fd010b07cb26820aae86b7e73b681ee4889684fb8d2d4537aab13"}, - {file = "multidict-6.7.0-cp314-cp314t-win_amd64.whl", hash = "sha256:09929cab6fcb68122776d575e03c6cc64ee0b8fca48d17e135474b042ce515cd"}, - {file = "multidict-6.7.0-cp314-cp314t-win_arm64.whl", hash = "sha256:cc41db090ed742f32bd2d2c721861725e6109681eddf835d0a82bd3a5c382827"}, - {file = "multidict-6.7.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:363eb68a0a59bd2303216d2346e6c441ba10d36d1f9969fcb6f1ba700de7bb5c"}, - {file = "multidict-6.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d874eb056410ca05fed180b6642e680373688efafc7f077b2a2f61811e873a40"}, - {file = "multidict-6.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b55d5497b51afdfde55925e04a022f1de14d4f4f25cdfd4f5d9b0aa96166851"}, - {file = "multidict-6.7.0-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f8e5c0031b90ca9ce555e2e8fd5c3b02a25f14989cbc310701823832c99eb687"}, - {file = "multidict-6.7.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cf41880c991716f3c7cec48e2f19ae4045fc9db5fc9cff27347ada24d710bb5"}, - {file = "multidict-6.7.0-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8cfc12a8630a29d601f48d47787bd7eb730e475e83edb5d6c5084317463373eb"}, - {file = "multidict-6.7.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3996b50c3237c4aec17459217c1e7bbdead9a22a0fcd3c365564fbd16439dde6"}, - {file = "multidict-6.7.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7f5170993a0dd3ab871c74f45c0a21a4e2c37a2f2b01b5f722a2ad9c6650469e"}, - {file = "multidict-6.7.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ec81878ddf0e98817def1e77d4f50dae5ef5b0e4fe796fae3bd674304172416e"}, - {file = "multidict-6.7.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9281bf5b34f59afbc6b1e477a372e9526b66ca446f4bf62592839c195a718b32"}, - {file = "multidict-6.7.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:68af405971779d8b37198726f2b6fe3955db846fee42db7a4286fc542203934c"}, - {file = "multidict-6.7.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3ba3ef510467abb0667421a286dc906e30eb08569365f5cdb131d7aff7c2dd84"}, - {file = "multidict-6.7.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:b61189b29081a20c7e4e0b49b44d5d44bb0dc92be3c6d06a11cc043f81bf9329"}, - {file = "multidict-6.7.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:fb287618b9c7aa3bf8d825f02d9201b2f13078a5ed3b293c8f4d953917d84d5e"}, - {file = "multidict-6.7.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:521f33e377ff64b96c4c556b81c55d0cfffb96a11c194fd0c3f1e56f3d8dd5a4"}, - {file = "multidict-6.7.0-cp39-cp39-win32.whl", hash = "sha256:ce8fdc2dca699f8dbf055a61d73eaa10482569ad20ee3c36ef9641f69afa8c91"}, - {file = "multidict-6.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:7e73299c99939f089dd9b2120a04a516b95cdf8c1cd2b18c53ebf0de80b1f18f"}, - {file = "multidict-6.7.0-cp39-cp39-win_arm64.whl", hash = "sha256:6bdce131e14b04fd34a809b6380dbfd826065c3e2fe8a50dbae659fa0c390546"}, - {file = "multidict-6.7.0-py3-none-any.whl", hash = "sha256:394fc5c42a333c9ffc3e421a4c85e08580d990e08b99f6bf35b4132114c5dcb3"}, - {file = "multidict-6.7.0.tar.gz", hash = "sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5"}, -] - -[[package]] -name = "mypy" -version = "1.18.2" -description = "Optional static typing for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c"}, - {file = "mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e"}, - {file = "mypy-1.18.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448acd386266989ef11662ce3c8011fd2a7b632e0ec7d61a98edd8e27472225b"}, - {file = "mypy-1.18.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f9e171c465ad3901dc652643ee4bffa8e9fef4d7d0eece23b428908c77a76a66"}, - {file = "mypy-1.18.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:592ec214750bc00741af1f80cbf96b5013d81486b7bb24cb052382c19e40b428"}, - {file = "mypy-1.18.2-cp310-cp310-win_amd64.whl", hash = "sha256:7fb95f97199ea11769ebe3638c29b550b5221e997c63b14ef93d2e971606ebed"}, - {file = "mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f"}, - {file = "mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341"}, - {file = "mypy-1.18.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1379451880512ffce14505493bd9fe469e0697543717298242574882cf8cdb8d"}, - {file = "mypy-1.18.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1331eb7fd110d60c24999893320967594ff84c38ac6d19e0a76c5fd809a84c86"}, - {file = "mypy-1.18.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ca30b50a51e7ba93b00422e486cbb124f1c56a535e20eff7b2d6ab72b3b2e37"}, - {file = "mypy-1.18.2-cp311-cp311-win_amd64.whl", hash = "sha256:664dc726e67fa54e14536f6e1224bcfce1d9e5ac02426d2326e2bb4e081d1ce8"}, - {file = "mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34"}, - {file = "mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764"}, - {file = "mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893"}, - {file = "mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914"}, - {file = "mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8"}, - {file = "mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074"}, - {file = "mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc"}, - {file = "mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e"}, - {file = "mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986"}, - {file = "mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d"}, - {file = "mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba"}, - {file = "mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544"}, - {file = "mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce"}, - {file = "mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d"}, - {file = "mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c"}, - {file = "mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb"}, - {file = "mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075"}, - {file = "mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf"}, - {file = "mypy-1.18.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25a9c8fb67b00599f839cf472713f54249a62efd53a54b565eb61956a7e3296b"}, - {file = "mypy-1.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2b9c7e284ee20e7598d6f42e13ca40b4928e6957ed6813d1ab6348aa3f47133"}, - {file = "mypy-1.18.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d6985ed057513e344e43a26cc1cd815c7a94602fb6a3130a34798625bc2f07b6"}, - {file = "mypy-1.18.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22f27105f1525ec024b5c630c0b9f36d5c1cc4d447d61fe51ff4bd60633f47ac"}, - {file = "mypy-1.18.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:030c52d0ea8144e721e49b1f68391e39553d7451f0c3f8a7565b59e19fcb608b"}, - {file = "mypy-1.18.2-cp39-cp39-win_amd64.whl", hash = "sha256:aa5e07ac1a60a253445797e42b8b2963c9675563a94f11291ab40718b016a7a0"}, - {file = "mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e"}, - {file = "mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b"}, -] - -[package.dependencies] -mypy_extensions = ">=1.0.0" -pathspec = ">=0.9.0" -typing_extensions = ">=4.6.0" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.1.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, - {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, -] - -[[package]] -name = "networkx" -version = "3.5" -description = "Python package for creating and manipulating graphs and networks" -optional = false -python-versions = ">=3.11" -groups = ["dev"] -files = [ - {file = "networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec"}, - {file = "networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037"}, -] - -[package.extras] -default = ["matplotlib (>=3.8)", "numpy (>=1.25)", "pandas (>=2.0)", "scipy (>=1.11.2)"] -developer = ["mypy (>=1.15)", "pre-commit (>=4.1)"] -doc = ["intersphinx-registry", "myst-nb (>=1.1)", "numpydoc (>=1.8.0)", "pillow (>=10)", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8.0)", "sphinx-gallery (>=0.18)", "texext (>=0.6.7)"] -example = ["cairocffi (>=1.7)", "contextily (>=1.6)", "igraph (>=0.11)", "momepy (>=0.7.2)", "osmnx (>=2.0.0)", "scikit-learn (>=1.5)", "seaborn (>=0.13)"] -extra = ["lxml (>=4.6)", "pydot (>=3.0.1)", "pygraphviz (>=1.14)", "sympy (>=1.10)"] -test = ["pytest (>=7.2)", "pytest-cov (>=4.0)", "pytest-xdist (>=3.0)"] -test-extras = ["pytest-mpl", "pytest-randomly"] - -[[package]] -name = "nodeenv" -version = "1.9.1" -description = "Node.js virtual environment builder" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] -files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "packageurl-python" -version = "0.17.5" -description = "A purl aka. Package URL parser and builder" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "packageurl_python-0.17.5-py3-none-any.whl", hash = "sha256:f0e55452ab37b5c192c443de1458e3f3b4d8ac27f747df6e8c48adeab081d321"}, - {file = "packageurl_python-0.17.5.tar.gz", hash = "sha256:a7be3f3ba70d705f738ace9bf6124f31920245a49fa69d4b416da7037dd2de61"}, -] - -[package.extras] -build = ["setuptools", "wheel"] -lint = ["black", "isort", "mypy"] -sqlalchemy = ["sqlalchemy (>=2.0.0)"] -test = ["pytest"] - -[[package]] -name = "packaging" -version = "24.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "pip" -version = "25.3" -description = "The PyPA recommended tool for installing Python packages." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pip-25.3-py3-none-any.whl", hash = "sha256:9655943313a94722b7774661c21049070f6bbb0a1516bf02f7c8d5d9201514cd"}, - {file = "pip-25.3.tar.gz", hash = "sha256:8d0538dbbd7babbd207f261ed969c65de439f6bc9e5dbd3b3b9a77f25d95f343"}, -] - -[[package]] -name = "pip-api" -version = "0.0.34" -description = "An unofficial, importable pip API" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pip_api-0.0.34-py3-none-any.whl", hash = "sha256:8b2d7d7c37f2447373aa2cf8b1f60a2f2b27a84e1e9e0294a3f6ef10eb3ba6bb"}, - {file = "pip_api-0.0.34.tar.gz", hash = "sha256:9b75e958f14c5a2614bae415f2adf7eeb54d50a2cfbe7e24fd4826471bac3625"}, -] - -[package.dependencies] -pip = "*" - -[[package]] -name = "pip-audit" -version = "2.9.0" -description = "A tool for scanning Python environments for known vulnerabilities" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pip_audit-2.9.0-py3-none-any.whl", hash = "sha256:348b16e60895749a0839875d7cc27ebd692e1584ebe5d5cb145941c8e25a80bd"}, - {file = "pip_audit-2.9.0.tar.gz", hash = "sha256:0b998410b58339d7a231e5aa004326a294e4c7c6295289cdc9d5e1ef07b1f44d"}, -] - -[package.dependencies] -CacheControl = {version = ">=0.13.0", extras = ["filecache"]} -cyclonedx-python-lib = ">=5,<10" -packaging = ">=23.0.0" -pip-api = ">=0.0.28" -pip-requirements-parser = ">=32.0.0" -platformdirs = ">=4.2.0" -requests = ">=2.31.0" -rich = ">=12.4" -toml = ">=0.10" - -[package.extras] -dev = ["build", "pip-audit[doc,lint,test]"] -doc = ["pdoc"] -lint = ["interrogate (>=1.6,<2.0)", "mypy", "ruff (>=0.9,<1.0)", "types-requests", "types-toml"] -test = ["coverage[toml] (>=7.0,!=7.3.3,<8.0)", "pretend", "pytest", "pytest-cov"] - -[[package]] -name = "pip-requirements-parser" -version = "32.0.1" -description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." -optional = false -python-versions = ">=3.6.0" -groups = ["dev"] -files = [ - {file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3"}, - {file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526"}, -] - -[package.dependencies] -packaging = "*" -pyparsing = "*" - -[package.extras] -docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] -testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] - -[[package]] -name = "platformdirs" -version = "4.5.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.10" -groups = ["dev"] -files = [ - {file = "platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3"}, - {file = "platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312"}, -] - -[package.extras] -docs = ["furo (>=2025.9.25)", "proselint (>=0.14)", "sphinx (>=8.2.3)", "sphinx-autodoc-typehints (>=3.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.4.2)", "pytest-cov (>=7)", "pytest-mock (>=3.15.1)"] -type = ["mypy (>=1.18.2)"] - -[[package]] -name = "pluggy" -version = "1.6.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, - {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["coverage", "pytest", "pytest-benchmark"] - -[[package]] -name = "pre-commit" -version = "4.3.0" -description = "A framework for managing and maintaining multi-language pre-commit hooks." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"}, - {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"}, -] - -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -virtualenv = ">=20.10.0" - -[[package]] -name = "propcache" -version = "0.4.1" -description = "Accelerated property cache" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "propcache-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c2d1fa3201efaf55d730400d945b5b3ab6e672e100ba0f9a409d950ab25d7db"}, - {file = "propcache-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1eb2994229cc8ce7fe9b3db88f5465f5fd8651672840b2e426b88cdb1a30aac8"}, - {file = "propcache-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66c1f011f45a3b33d7bcb22daed4b29c0c9e2224758b6be00686731e1b46f925"}, - {file = "propcache-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9a52009f2adffe195d0b605c25ec929d26b36ef986ba85244891dee3b294df21"}, - {file = "propcache-0.4.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5d4e2366a9c7b837555cf02fb9be2e3167d333aff716332ef1b7c3a142ec40c5"}, - {file = "propcache-0.4.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d2b6caef873b4f09e26ea7e33d65f42b944837563a47a94719cc3544319a0db"}, - {file = "propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b16ec437a8c8a965ecf95739448dd938b5c7f56e67ea009f4300d8df05f32b7"}, - {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:296f4c8ed03ca7476813fe666c9ea97869a8d7aec972618671b33a38a5182ef4"}, - {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:1f0978529a418ebd1f49dad413a2b68af33f85d5c5ca5c6ca2a3bed375a7ac60"}, - {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fd138803047fb4c062b1c1dd95462f5209456bfab55c734458f15d11da288f8f"}, - {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8c9b3cbe4584636d72ff556d9036e0c9317fa27b3ac1f0f558e7e84d1c9c5900"}, - {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f93243fdc5657247533273ac4f86ae106cc6445a0efacb9a1bfe982fcfefd90c"}, - {file = "propcache-0.4.1-cp310-cp310-win32.whl", hash = "sha256:a0ee98db9c5f80785b266eb805016e36058ac72c51a064040f2bc43b61101cdb"}, - {file = "propcache-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:1cdb7988c4e5ac7f6d175a28a9aa0c94cb6f2ebe52756a3c0cda98d2809a9e37"}, - {file = "propcache-0.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:d82ad62b19645419fe79dd63b3f9253e15b30e955c0170e5cebc350c1844e581"}, - {file = "propcache-0.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:60a8fda9644b7dfd5dece8c61d8a85e271cb958075bfc4e01083c148b61a7caf"}, - {file = "propcache-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c30b53e7e6bda1d547cabb47c825f3843a0a1a42b0496087bb58d8fedf9f41b5"}, - {file = "propcache-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6918ecbd897443087a3b7cd978d56546a812517dcaaca51b49526720571fa93e"}, - {file = "propcache-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d902a36df4e5989763425a8ab9e98cd8ad5c52c823b34ee7ef307fd50582566"}, - {file = "propcache-0.4.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a9695397f85973bb40427dedddf70d8dc4a44b22f1650dd4af9eedf443d45165"}, - {file = "propcache-0.4.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2bb07ffd7eaad486576430c89f9b215f9e4be68c4866a96e97db9e97fead85dc"}, - {file = "propcache-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd6f30fdcf9ae2a70abd34da54f18da086160e4d7d9251f81f3da0ff84fc5a48"}, - {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fc38cba02d1acba4e2869eef1a57a43dfbd3d49a59bf90dda7444ec2be6a5570"}, - {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:67fad6162281e80e882fb3ec355398cf72864a54069d060321f6cd0ade95fe85"}, - {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f10207adf04d08bec185bae14d9606a1444715bc99180f9331c9c02093e1959e"}, - {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e9b0d8d0845bbc4cfcdcbcdbf5086886bc8157aa963c31c777ceff7846c77757"}, - {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:981333cb2f4c1896a12f4ab92a9cc8f09ea664e9b7dbdc4eff74627af3a11c0f"}, - {file = "propcache-0.4.1-cp311-cp311-win32.whl", hash = "sha256:f1d2f90aeec838a52f1c1a32fe9a619fefd5e411721a9117fbf82aea638fe8a1"}, - {file = "propcache-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:364426a62660f3f699949ac8c621aad6977be7126c5807ce48c0aeb8e7333ea6"}, - {file = "propcache-0.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:e53f3a38d3510c11953f3e6a33f205c6d1b001129f972805ca9b42fc308bc239"}, - {file = "propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2"}, - {file = "propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403"}, - {file = "propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207"}, - {file = "propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72"}, - {file = "propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367"}, - {file = "propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4"}, - {file = "propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf"}, - {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3"}, - {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778"}, - {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6"}, - {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9"}, - {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75"}, - {file = "propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8"}, - {file = "propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db"}, - {file = "propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1"}, - {file = "propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf"}, - {file = "propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311"}, - {file = "propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74"}, - {file = "propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe"}, - {file = "propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af"}, - {file = "propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c"}, - {file = "propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f"}, - {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1"}, - {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24"}, - {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa"}, - {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61"}, - {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66"}, - {file = "propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81"}, - {file = "propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e"}, - {file = "propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1"}, - {file = "propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b"}, - {file = "propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566"}, - {file = "propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835"}, - {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e"}, - {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859"}, - {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b"}, - {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0"}, - {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af"}, - {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393"}, - {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874"}, - {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7"}, - {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1"}, - {file = "propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717"}, - {file = "propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37"}, - {file = "propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a"}, - {file = "propcache-0.4.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12"}, - {file = "propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c"}, - {file = "propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded"}, - {file = "propcache-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641"}, - {file = "propcache-0.4.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4"}, - {file = "propcache-0.4.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44"}, - {file = "propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d"}, - {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b"}, - {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e"}, - {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f"}, - {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49"}, - {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144"}, - {file = "propcache-0.4.1-cp314-cp314-win32.whl", hash = "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f"}, - {file = "propcache-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153"}, - {file = "propcache-0.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992"}, - {file = "propcache-0.4.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f"}, - {file = "propcache-0.4.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393"}, - {file = "propcache-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0"}, - {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a"}, - {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be"}, - {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc"}, - {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a"}, - {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89"}, - {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726"}, - {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367"}, - {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36"}, - {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455"}, - {file = "propcache-0.4.1-cp314-cp314t-win32.whl", hash = "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85"}, - {file = "propcache-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1"}, - {file = "propcache-0.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9"}, - {file = "propcache-0.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d233076ccf9e450c8b3bc6720af226b898ef5d051a2d145f7d765e6e9f9bcff"}, - {file = "propcache-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:357f5bb5c377a82e105e44bd3d52ba22b616f7b9773714bff93573988ef0a5fb"}, - {file = "propcache-0.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cbc3b6dfc728105b2a57c06791eb07a94229202ea75c59db644d7d496b698cac"}, - {file = "propcache-0.4.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:182b51b421f0501952d938dc0b0eb45246a5b5153c50d42b495ad5fb7517c888"}, - {file = "propcache-0.4.1-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4b536b39c5199b96fc6245eb5fb796c497381d3942f169e44e8e392b29c9ebcc"}, - {file = "propcache-0.4.1-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:db65d2af507bbfbdcedb254a11149f894169d90488dd3e7190f7cdcb2d6cd57a"}, - {file = "propcache-0.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd2dbc472da1f772a4dae4fa24be938a6c544671a912e30529984dd80400cd88"}, - {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:daede9cd44e0f8bdd9e6cc9a607fc81feb80fae7a5fc6cecaff0e0bb32e42d00"}, - {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:71b749281b816793678ae7f3d0d84bd36e694953822eaad408d682efc5ca18e0"}, - {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:0002004213ee1f36cfb3f9a42b5066100c44276b9b72b4e1504cddd3d692e86e"}, - {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:fe49d0a85038f36ba9e3ffafa1103e61170b28e95b16622e11be0a0ea07c6781"}, - {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:99d43339c83aaf4d32bda60928231848eee470c6bda8d02599cc4cebe872d183"}, - {file = "propcache-0.4.1-cp39-cp39-win32.whl", hash = "sha256:a129e76735bc792794d5177069691c3217898b9f5cee2b2661471e52ffe13f19"}, - {file = "propcache-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:948dab269721ae9a87fd16c514a0a2c2a1bdb23a9a61b969b0f9d9ee2968546f"}, - {file = "propcache-0.4.1-cp39-cp39-win_arm64.whl", hash = "sha256:5fd37c406dd6dc85aa743e214cef35dc54bbdd1419baac4f6ae5e5b1a2976938"}, - {file = "propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237"}, - {file = "propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d"}, -] - -[[package]] -name = "puyapy" -version = "5.4.0" -description = "An optimising compiler for Algorand Python" -optional = false -python-versions = "<4,>=3.12.0" -groups = ["dev"] -files = [ - {file = "puyapy-5.4.0-py3-none-any.whl", hash = "sha256:0028066723a62c90411b35a1f65a63a01ac737b073f779066ed9a2909cad9a47"}, -] - -[package.dependencies] -attrs = ">=25.3.0,<26" -cattrs = ">=25,<26" -colorama = {version = ">=0.4.6,<0.5", markers = "sys_platform == \"win32\""} -cyclopts = ">=3.23.1" -docstring-parser = ">=0.14.1" -immutabledict = ">=4.2.0,<5" -mypy-extensions = ">=1.0.0,<2" -networkx = ">=3.4.2,<4" -packaging = ">=24.0,<25.0" -pathspec = ">=0.9" -pycryptodomex = ">=3.6.0,<4" -pygls = ">=2.0.0a2" -structlog = ">=25.2.0,<26" -typing-extensions = ">=4.11.0,<5" - -[[package]] -name = "py-algorand-sdk" -version = "2.11.1" -description = "Algorand SDK in Python" -optional = false -python-versions = ">=3.10" -groups = ["main", "dev"] -files = [ - {file = "py_algorand_sdk-2.11.1-py3-none-any.whl", hash = "sha256:40c8db5e65420ade023c78dda1fff44f5af4666c4b12c8a0e976a6c33fb819b6"}, - {file = "py_algorand_sdk-2.11.1.tar.gz", hash = "sha256:ccca589b00f7939e6bfdf5a5ace261a4b26c9b4baf02b376c46fb61aa182c800"}, -] - -[package.dependencies] -msgpack = ">=1.0.0,<2" -pycryptodomex = ">=3.6.0,<4" -pynacl = ">=1.4.0,<2" - -[[package]] -name = "py-serializable" -version = "2.1.0" -description = "Library for serializing and deserializing Python Objects to and from JSON and XML." -optional = false -python-versions = "<4.0,>=3.8" -groups = ["dev"] -files = [ - {file = "py_serializable-2.1.0-py3-none-any.whl", hash = "sha256:b56d5d686b5a03ba4f4db5e769dc32336e142fc3bd4d68a8c25579ebb0a67304"}, - {file = "py_serializable-2.1.0.tar.gz", hash = "sha256:9d5db56154a867a9b897c0163b33a793c804c80cee984116d02d49e4578fc103"}, -] - -[package.dependencies] -defusedxml = ">=0.7.1,<0.8.0" - -[[package]] -name = "pycparser" -version = "2.23" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -markers = "platform_python_implementation != \"PyPy\" and implementation_name != \"PyPy\"" -files = [ - {file = "pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934"}, - {file = "pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2"}, -] - -[[package]] -name = "pycryptodomex" -version = "3.23.0" -description = "Cryptographic library for Python" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev"] -files = [ - {file = "pycryptodomex-3.23.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:add243d204e125f189819db65eed55e6b4713f70a7e9576c043178656529cec7"}, - {file = "pycryptodomex-3.23.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1c6d919fc8429e5cb228ba8c0d4d03d202a560b421c14867a65f6042990adc8e"}, - {file = "pycryptodomex-3.23.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:1c3a65ad441746b250d781910d26b7ed0a396733c6f2dbc3327bd7051ec8a541"}, - {file = "pycryptodomex-3.23.0-cp27-cp27m-win32.whl", hash = "sha256:47f6d318fe864d02d5e59a20a18834819596c4ed1d3c917801b22b92b3ffa648"}, - {file = "pycryptodomex-3.23.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:d9825410197a97685d6a1fa2a86196430b01877d64458a20e95d4fd00d739a08"}, - {file = "pycryptodomex-3.23.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:267a3038f87a8565bd834317dbf053a02055915acf353bf42ededb9edaf72010"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:7b37e08e3871efe2187bc1fd9320cc81d87caf19816c648f24443483005ff886"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:91979028227543010d7b2ba2471cf1d1e398b3f183cb105ac584df0c36dac28d"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b8962204c47464d5c1c4038abeadd4514a133b28748bcd9fa5b6d62e3cec6fa"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a33986a0066860f7fcf7c7bd2bc804fa90e434183645595ae7b33d01f3c91ed8"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7947ab8d589e3178da3d7cdeabe14f841b391e17046954f2fbcd941705762b5"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c25e30a20e1b426e1f0fa00131c516f16e474204eee1139d1603e132acffc314"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:da4fa650cef02db88c2b98acc5434461e027dce0ae8c22dd5a69013eaf510006"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:58b851b9effd0d072d4ca2e4542bf2a4abcf13c82a29fd2c93ce27ee2a2e9462"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-win32.whl", hash = "sha256:a9d446e844f08299236780f2efa9898c818fe7e02f17263866b8550c7d5fb328"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bc65bdd9fc8de7a35a74cab1c898cab391a4add33a8fe740bda00f5976ca4708"}, - {file = "pycryptodomex-3.23.0-cp313-cp313t-win_arm64.whl", hash = "sha256:c885da45e70139464f082018ac527fdaad26f1657a99ee13eecdce0f0ca24ab4"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:06698f957fe1ab229a99ba2defeeae1c09af185baa909a31a5d1f9d42b1aaed6"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b2c2537863eccef2d41061e82a881dcabb04944c5c06c5aa7110b577cc487545"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43c446e2ba8df8889e0e16f02211c25b4934898384c1ec1ec04d7889c0333587"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f489c4765093fb60e2edafdf223397bc716491b2b69fe74367b70d6999257a5c"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdc69d0d3d989a1029df0eed67cc5e8e5d968f3724f4519bd03e0ec68df7543c"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6bbcb1dd0f646484939e142462d9e532482bc74475cecf9c4903d4e1cd21f003"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:8a4fcd42ccb04c31268d1efeecfccfd1249612b4de6374205376b8f280321744"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:55ccbe27f049743a4caf4f4221b166560d3438d0b1e5ab929e07ae1702a4d6fd"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-win32.whl", hash = "sha256:189afbc87f0b9f158386bf051f720e20fa6145975f1e76369303d0f31d1a8d7c"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-win_amd64.whl", hash = "sha256:52e5ca58c3a0b0bd5e100a9fbc8015059b05cffc6c66ce9d98b4b45e023443b9"}, - {file = "pycryptodomex-3.23.0-cp37-abi3-win_arm64.whl", hash = "sha256:02d87b80778c171445d67e23d1caef279bf4b25c3597050ccd2e13970b57fd51"}, - {file = "pycryptodomex-3.23.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:febec69c0291efd056c65691b6d9a339f8b4bc43c6635b8699471248fe897fea"}, - {file = "pycryptodomex-3.23.0-pp27-pypy_73-win32.whl", hash = "sha256:c84b239a1f4ec62e9c789aafe0543f0594f0acd90c8d9e15bcece3efe55eca66"}, - {file = "pycryptodomex-3.23.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ebfff755c360d674306e5891c564a274a47953562b42fb74a5c25b8fc1fb1cb5"}, - {file = "pycryptodomex-3.23.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eca54f4bb349d45afc17e3011ed4264ef1cc9e266699874cdd1349c504e64798"}, - {file = "pycryptodomex-3.23.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2596e643d4365e14d0879dc5aafe6355616c61c2176009270f3048f6d9a61f"}, - {file = "pycryptodomex-3.23.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fdfac7cda115bca3a5abb2f9e43bc2fb66c2b65ab074913643803ca7083a79ea"}, - {file = "pycryptodomex-3.23.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:14c37aaece158d0ace436f76a7bb19093db3b4deade9797abfc39ec6cd6cc2fe"}, - {file = "pycryptodomex-3.23.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7de1e40a41a5d7f1ac42b6569b10bcdded34339950945948529067d8426d2785"}, - {file = "pycryptodomex-3.23.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bffc92138d75664b6d543984db7893a628559b9e78658563b0395e2a5fb47ed9"}, - {file = "pycryptodomex-3.23.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df027262368334552db2c0ce39706b3fb32022d1dce34673d0f9422df004b96a"}, - {file = "pycryptodomex-3.23.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e79f1aaff5a3a374e92eb462fa9e598585452135012e2945f96874ca6eeb1ff"}, - {file = "pycryptodomex-3.23.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:27e13c80ac9a0a1d050ef0a7e0a18cc04c8850101ec891815b6c5a0375e8a245"}, - {file = "pycryptodomex-3.23.0.tar.gz", hash = "sha256:71909758f010c82bc99b0abf4ea12012c98962fbf0583c2164f8b84533c2e4da"}, -] - -[[package]] -name = "pygls" -version = "2.0.0" -description = "A pythonic generic language server (pronounced like 'pie glass')" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pygls-2.0.0-py3-none-any.whl", hash = "sha256:b4e54bba806f76781017ded8fd07463b98670f959042c44170cd362088b200cc"}, - {file = "pygls-2.0.0.tar.gz", hash = "sha256:99accd03de1ca76fe1e7e317f0968ebccf7b9955afed6e2e3e188606a20b4f07"}, -] - -[package.dependencies] -attrs = ">=24.3.0" -cattrs = ">=23.1.2" -lsprotocol = "2025.0.0" - -[package.extras] -ws = ["websockets (>=13.0)"] - -[[package]] -name = "pygments" -version = "2.19.2" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, - {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pynacl" -version = "1.6.0" -description = "Python binding to the Networking and Cryptography (NaCl) library" -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -files = [ - {file = "pynacl-1.6.0-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:f46386c24a65383a9081d68e9c2de909b1834ec74ff3013271f1bca9c2d233eb"}, - {file = "pynacl-1.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dea103a1afcbc333bc0e992e64233d360d393d1e63d0bc88554f572365664348"}, - {file = "pynacl-1.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:04f20784083014e265ad58c1b2dd562c3e35864b5394a14ab54f5d150ee9e53e"}, - {file = "pynacl-1.6.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbcc4452a1eb10cd5217318c822fde4be279c9de8567f78bad24c773c21254f8"}, - {file = "pynacl-1.6.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fed9fe1bec9e7ff9af31cd0abba179d0e984a2960c77e8e5292c7e9b7f7b5d"}, - {file = "pynacl-1.6.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:10d755cf2a455d8c0f8c767a43d68f24d163b8fe93ccfaabfa7bafd26be58d73"}, - {file = "pynacl-1.6.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:536703b8f90e911294831a7fbcd0c062b837f3ccaa923d92a6254e11178aaf42"}, - {file = "pynacl-1.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6b08eab48c9669d515a344fb0ef27e2cbde847721e34bba94a343baa0f33f1f4"}, - {file = "pynacl-1.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5789f016e08e5606803161ba24de01b5a345d24590a80323379fc4408832d290"}, - {file = "pynacl-1.6.0-cp314-cp314t-win32.whl", hash = "sha256:4853c154dc16ea12f8f3ee4b7e763331876316cc3a9f06aeedf39bcdca8f9995"}, - {file = "pynacl-1.6.0-cp314-cp314t-win_amd64.whl", hash = "sha256:347dcddce0b4d83ed3f32fd00379c83c425abee5a9d2cd0a2c84871334eaff64"}, - {file = "pynacl-1.6.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2d6cd56ce4998cb66a6c112fda7b1fdce5266c9f05044fa72972613bef376d15"}, - {file = "pynacl-1.6.0-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:f4b3824920e206b4f52abd7de621ea7a44fd3cb5c8daceb7c3612345dfc54f2e"}, - {file = "pynacl-1.6.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:16dd347cdc8ae0b0f6187a2608c0af1c8b7ecbbe6b4a06bff8253c192f696990"}, - {file = "pynacl-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:16c60daceee88d04f8d41d0a4004a7ed8d9a5126b997efd2933e08e93a3bd850"}, - {file = "pynacl-1.6.0-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25720bad35dfac34a2bcdd61d9e08d6bfc6041bebc7751d9c9f2446cf1e77d64"}, - {file = "pynacl-1.6.0-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bfaa0a28a1ab718bad6239979a5a57a8d1506d0caf2fba17e524dbb409441cf"}, - {file = "pynacl-1.6.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ef214b90556bb46a485b7da8258e59204c244b1b5b576fb71848819b468c44a7"}, - {file = "pynacl-1.6.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:49c336dd80ea54780bcff6a03ee1a476be1612423010472e60af83452aa0f442"}, - {file = "pynacl-1.6.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f3482abf0f9815e7246d461fab597aa179b7524628a4bc36f86a7dc418d2608d"}, - {file = "pynacl-1.6.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:140373378e34a1f6977e573033d1dd1de88d2a5d90ec6958c9485b2fd9f3eb90"}, - {file = "pynacl-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6b393bc5e5a0eb86bb85b533deb2d2c815666665f840a09e0aa3362bb6088736"}, - {file = "pynacl-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a25cfede801f01e54179b8ff9514bd7b5944da560b7040939732d1804d25419"}, - {file = "pynacl-1.6.0-cp38-abi3-win32.whl", hash = "sha256:dcdeb41c22ff3c66eef5e63049abf7639e0db4edee57ba70531fc1b6b133185d"}, - {file = "pynacl-1.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:cf831615cc16ba324240de79d925eacae8265b7691412ac6b24221db157f6bd1"}, - {file = "pynacl-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:84709cea8f888e618c21ed9a0efdb1a59cc63141c403db8bf56c469b71ad56f2"}, - {file = "pynacl-1.6.0.tar.gz", hash = "sha256:cb36deafe6e2bce3b286e5d1f3e1c246e0ccdb8808ddb4550bb2792f2df298f2"}, -] - -[package.dependencies] -cffi = [ - {version = ">=1.4.1", markers = "platform_python_implementation != \"PyPy\" and python_version < \"3.14\""}, - {version = ">=2.0.0", markers = "platform_python_implementation != \"PyPy\" and python_version >= \"3.14\""}, -] - -[package.extras] -docs = ["sphinx (<7)", "sphinx_rtd_theme"] -tests = ["hypothesis (>=3.27.0)", "pytest (>=7.4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] - -[[package]] -name = "pyparsing" -version = "3.2.5" -description = "pyparsing - Classes and methods to define and execute parsing grammars" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e"}, - {file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6"}, -] - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] - -[[package]] -name = "pytest" -version = "8.4.2" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79"}, - {file = "pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01"}, -] - -[package.dependencies] -colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} -iniconfig = ">=1" -packaging = ">=20" -pluggy = ">=1.5,<2" -pygments = ">=2.7.2" - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "7.0.0" -description = "Pytest plugin for measuring coverage." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, - {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, -] - -[package.dependencies] -coverage = {version = ">=7.10.6", extras = ["toml"]} -pluggy = ">=1.2" -pytest = ">=7" - -[package.extras] -testing = ["process-tests", "pytest-xdist", "virtualenv"] - -[[package]] -name = "python-dotenv" -version = "1.2.1" -description = "Read key-value pairs from a .env file and set them as environment variables" -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - {file = "python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61"}, - {file = "python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "pytokens" -version = "0.2.0" -description = "A Fast, spec compliant Python 3.13+ tokenizer that runs on older Pythons." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pytokens-0.2.0-py3-none-any.whl", hash = "sha256:74d4b318c67f4295c13782ddd9abcb7e297ec5630ad060eb90abf7ebbefe59f8"}, - {file = "pytokens-0.2.0.tar.gz", hash = "sha256:532d6421364e5869ea57a9523bf385f02586d4662acbcc0342afd69511b4dd43"}, -] - -[package.extras] -dev = ["black", "build", "mypy", "pytest", "pytest-cov", "setuptools", "tox", "twine", "wheel"] - -[[package]] -name = "pyyaml" -version = "6.0.3" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"}, - {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"}, - {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"}, - {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"}, - {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"}, - {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"}, - {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"}, - {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"}, - {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"}, - {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"}, - {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"}, - {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"}, - {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"}, - {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"}, - {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"}, - {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"}, - {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"}, - {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"}, - {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"}, - {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"}, - {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"}, - {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"}, - {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"}, - {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"}, - {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"}, - {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"}, - {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"}, - {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"}, - {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"}, - {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"}, - {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"}, - {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"}, - {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"}, - {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"}, - {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"}, - {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"}, - {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"}, - {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"}, - {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"}, - {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"}, - {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"}, - {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"}, - {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"}, - {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"}, - {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"}, - {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"}, - {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"}, - {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"}, - {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"}, - {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"}, - {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"}, - {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"}, - {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"}, - {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"}, - {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"}, - {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"}, - {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"}, - {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"}, - {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"}, - {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"}, - {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"}, - {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"}, - {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"}, - {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"}, - {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"}, - {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"}, -] - -[[package]] -name = "requests" -version = "2.32.5" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, - {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset_normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "rich" -version = "14.2.0" -description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -optional = false -python-versions = ">=3.8.0" -groups = ["dev"] -files = [ - {file = "rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd"}, - {file = "rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4"}, -] - -[package.dependencies] -markdown-it-py = ">=2.2.0" -pygments = ">=2.13.0,<3.0.0" - -[package.extras] -jupyter = ["ipywidgets (>=7.5.1,<9)"] - -[[package]] -name = "rich-rst" -version = "1.3.2" -description = "A beautiful reStructuredText renderer for rich" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "rich_rst-1.3.2-py3-none-any.whl", hash = "sha256:a99b4907cbe118cf9d18b0b44de272efa61f15117c61e39ebdc431baf5df722a"}, - {file = "rich_rst-1.3.2.tar.gz", hash = "sha256:a1196fdddf1e364b02ec68a05e8ff8f6914fee10fbca2e6b6735f166bb0da8d4"}, -] - -[package.dependencies] -docutils = "*" -rich = ">=12.0.0" - -[package.extras] -docs = ["sphinx"] - -[[package]] -name = "ruff" -version = "0.14.3" -description = "An extremely fast Python linter and code formatter, written in Rust." -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "ruff-0.14.3-py3-none-linux_armv6l.whl", hash = "sha256:876b21e6c824f519446715c1342b8e60f97f93264012de9d8d10314f8a79c371"}, - {file = "ruff-0.14.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6fd8c79b457bedd2abf2702b9b472147cd860ed7855c73a5247fa55c9117654"}, - {file = "ruff-0.14.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:71ff6edca490c308f083156938c0c1a66907151263c4abdcb588602c6e696a14"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:786ee3ce6139772ff9272aaf43296d975c0217ee1b97538a98171bf0d21f87ed"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cd6291d0061811c52b8e392f946889916757610d45d004e41140d81fb6cd5ddc"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a497ec0c3d2c88561b6d90f9c29f5ae68221ac00d471f306fa21fa4264ce5fcd"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e231e1be58fc568950a04fbe6887c8e4b85310e7889727e2b81db205c45059eb"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:469e35872a09c0e45fecf48dd960bfbce056b5db2d5e6b50eca329b4f853ae20"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d6bc90307c469cb9d28b7cfad90aaa600b10d67c6e22026869f585e1e8a2db0"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2f8a0bbcffcfd895df39c9a4ecd59bb80dca03dc43f7fb63e647ed176b741e"}, - {file = "ruff-0.14.3-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:678fdd7c7d2d94851597c23ee6336d25f9930b460b55f8598e011b57c74fd8c5"}, - {file = "ruff-0.14.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1ec1ac071e7e37e0221d2f2dbaf90897a988c531a8592a6a5959f0603a1ecf5e"}, - {file = "ruff-0.14.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:afcdc4b5335ef440d19e7df9e8ae2ad9f749352190e96d481dc501b753f0733e"}, - {file = "ruff-0.14.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:7bfc42f81862749a7136267a343990f865e71fe2f99cf8d2958f684d23ce3dfa"}, - {file = "ruff-0.14.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a65e448cfd7e9c59fae8cf37f9221585d3354febaad9a07f29158af1528e165f"}, - {file = "ruff-0.14.3-py3-none-win32.whl", hash = "sha256:f3d91857d023ba93e14ed2d462ab62c3428f9bbf2b4fbac50a03ca66d31991f7"}, - {file = "ruff-0.14.3-py3-none-win_amd64.whl", hash = "sha256:d7b7006ac0756306db212fd37116cce2bd307e1e109375e1c6c106002df0ae5f"}, - {file = "ruff-0.14.3-py3-none-win_arm64.whl", hash = "sha256:26eb477ede6d399d898791d01961e16b86f02bc2486d0d1a7a9bb2379d055dc1"}, - {file = "ruff-0.14.3.tar.gz", hash = "sha256:4ff876d2ab2b161b6de0aa1f5bd714e8e9b4033dc122ee006925fbacc4f62153"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -groups = ["main", "dev"] -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "sortedcontainers" -version = "2.4.0" -description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, - {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, -] - -[[package]] -name = "structlog" -version = "25.5.0" -description = "Structured Logging for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "structlog-25.5.0-py3-none-any.whl", hash = "sha256:a8453e9b9e636ec59bd9e79bbd4a72f025981b3ba0f5837aebf48f02f37a7f9f"}, - {file = "structlog-25.5.0.tar.gz", hash = "sha256:098522a3bebed9153d4570c6d0288abf80a031dfdb2048d59a49e9dc2190fc98"}, -] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -groups = ["dev"] -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - -[[package]] -name = "typing-extensions" -version = "4.15.0" -description = "Backported and Experimental Type Hints for Python 3.9+" -optional = false -python-versions = ">=3.9" -groups = ["main", "dev"] -files = [ - {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, - {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, -] - -[[package]] -name = "urllib3" -version = "2.5.0" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, - {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "virtualenv" -version = "20.35.4" -description = "Virtual Python Environment builder" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b"}, - {file = "virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c"}, -] - -[package.dependencies] -distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<5" - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] - -[[package]] -name = "yarl" -version = "1.22.0" -description = "Yet another URL library" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "yarl-1.22.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c7bd6683587567e5a49ee6e336e0612bec8329be1b7d4c8af5687dcdeb67ee1e"}, - {file = "yarl-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cdac20da754f3a723cceea5b3448e1a2074866406adeb4ef35b469d089adb8f"}, - {file = "yarl-1.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07a524d84df0c10f41e3ee918846e1974aba4ec017f990dc735aad487a0bdfdf"}, - {file = "yarl-1.22.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b329cb8146d7b736677a2440e422eadd775d1806a81db2d4cded80a48efc1a"}, - {file = "yarl-1.22.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:75976c6945d85dbb9ee6308cd7ff7b1fb9409380c82d6119bd778d8fcfe2931c"}, - {file = "yarl-1.22.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:80ddf7a5f8c86cb3eb4bc9028b07bbbf1f08a96c5c0bc1244be5e8fefcb94147"}, - {file = "yarl-1.22.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d332fc2e3c94dad927f2112395772a4e4fedbcf8f80efc21ed7cdfae4d574fdb"}, - {file = "yarl-1.22.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cf71bf877efeac18b38d3930594c0948c82b64547c1cf420ba48722fe5509f6"}, - {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:663e1cadaddae26be034a6ab6072449a8426ddb03d500f43daf952b74553bba0"}, - {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6dcbb0829c671f305be48a7227918cfcd11276c2d637a8033a99a02b67bf9eda"}, - {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f0d97c18dfd9a9af4490631905a3f131a8e4c9e80a39353919e2cfed8f00aedc"}, - {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:437840083abe022c978470b942ff832c3940b2ad3734d424b7eaffcd07f76737"}, - {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a899cbd98dce6f5d8de1aad31cb712ec0a530abc0a86bd6edaa47c1090138467"}, - {file = "yarl-1.22.0-cp310-cp310-win32.whl", hash = "sha256:595697f68bd1f0c1c159fcb97b661fc9c3f5db46498043555d04805430e79bea"}, - {file = "yarl-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:cb95a9b1adaa48e41815a55ae740cfda005758104049a640a398120bf02515ca"}, - {file = "yarl-1.22.0-cp310-cp310-win_arm64.whl", hash = "sha256:b85b982afde6df99ecc996990d4ad7ccbdbb70e2a4ba4de0aecde5922ba98a0b"}, - {file = "yarl-1.22.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ab72135b1f2db3fed3997d7e7dc1b80573c67138023852b6efb336a5eae6511"}, - {file = "yarl-1.22.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:669930400e375570189492dc8d8341301578e8493aec04aebc20d4717f899dd6"}, - {file = "yarl-1.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:792a2af6d58177ef7c19cbf0097aba92ca1b9cb3ffdd9c7470e156c8f9b5e028"}, - {file = "yarl-1.22.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea66b1c11c9150f1372f69afb6b8116f2dd7286f38e14ea71a44eee9ec51b9d"}, - {file = "yarl-1.22.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3e2daa88dc91870215961e96a039ec73e4937da13cf77ce17f9cad0c18df3503"}, - {file = "yarl-1.22.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba440ae430c00eee41509353628600212112cd5018d5def7e9b05ea7ac34eb65"}, - {file = "yarl-1.22.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e6438cc8f23a9c1478633d216b16104a586b9761db62bfacb6425bac0a36679e"}, - {file = "yarl-1.22.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c52a6e78aef5cf47a98ef8e934755abf53953379b7d53e68b15ff4420e6683d"}, - {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3b06bcadaac49c70f4c88af4ffcfbe3dc155aab3163e75777818092478bcbbe7"}, - {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6944b2dc72c4d7f7052683487e3677456050ff77fcf5e6204e98caf785ad1967"}, - {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5372ca1df0f91a86b047d1277c2aaf1edb32d78bbcefffc81b40ffd18f027ed"}, - {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:51af598701f5299012b8416486b40fceef8c26fc87dc6d7d1f6fc30609ea0aa6"}, - {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b266bd01fedeffeeac01a79ae181719ff848a5a13ce10075adbefc8f1daee70e"}, - {file = "yarl-1.22.0-cp311-cp311-win32.whl", hash = "sha256:a9b1ba5610a4e20f655258d5a1fdc7ebe3d837bb0e45b581398b99eb98b1f5ca"}, - {file = "yarl-1.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:078278b9b0b11568937d9509b589ee83ef98ed6d561dfe2020e24a9fd08eaa2b"}, - {file = "yarl-1.22.0-cp311-cp311-win_arm64.whl", hash = "sha256:b6a6f620cfe13ccec221fa312139135166e47ae169f8253f72a0abc0dae94376"}, - {file = "yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f"}, - {file = "yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2"}, - {file = "yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74"}, - {file = "yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df"}, - {file = "yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb"}, - {file = "yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2"}, - {file = "yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82"}, - {file = "yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a"}, - {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124"}, - {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa"}, - {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7"}, - {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d"}, - {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520"}, - {file = "yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8"}, - {file = "yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c"}, - {file = "yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74"}, - {file = "yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53"}, - {file = "yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a"}, - {file = "yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c"}, - {file = "yarl-1.22.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601"}, - {file = "yarl-1.22.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a"}, - {file = "yarl-1.22.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df"}, - {file = "yarl-1.22.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2"}, - {file = "yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b"}, - {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273"}, - {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a"}, - {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d"}, - {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02"}, - {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67"}, - {file = "yarl-1.22.0-cp313-cp313-win32.whl", hash = "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95"}, - {file = "yarl-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d"}, - {file = "yarl-1.22.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b"}, - {file = "yarl-1.22.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10"}, - {file = "yarl-1.22.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3"}, - {file = "yarl-1.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9"}, - {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f"}, - {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0"}, - {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e"}, - {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708"}, - {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f"}, - {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d"}, - {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8"}, - {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5"}, - {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f"}, - {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62"}, - {file = "yarl-1.22.0-cp313-cp313t-win32.whl", hash = "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03"}, - {file = "yarl-1.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249"}, - {file = "yarl-1.22.0-cp313-cp313t-win_arm64.whl", hash = "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b"}, - {file = "yarl-1.22.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4"}, - {file = "yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683"}, - {file = "yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b"}, - {file = "yarl-1.22.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e"}, - {file = "yarl-1.22.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590"}, - {file = "yarl-1.22.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2"}, - {file = "yarl-1.22.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da"}, - {file = "yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784"}, - {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b"}, - {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694"}, - {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d"}, - {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd"}, - {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da"}, - {file = "yarl-1.22.0-cp314-cp314-win32.whl", hash = "sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2"}, - {file = "yarl-1.22.0-cp314-cp314-win_amd64.whl", hash = "sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79"}, - {file = "yarl-1.22.0-cp314-cp314-win_arm64.whl", hash = "sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33"}, - {file = "yarl-1.22.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1"}, - {file = "yarl-1.22.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca"}, - {file = "yarl-1.22.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53"}, - {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c"}, - {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf"}, - {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face"}, - {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b"}, - {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486"}, - {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138"}, - {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a"}, - {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529"}, - {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093"}, - {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c"}, - {file = "yarl-1.22.0-cp314-cp314t-win32.whl", hash = "sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e"}, - {file = "yarl-1.22.0-cp314-cp314t-win_amd64.whl", hash = "sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27"}, - {file = "yarl-1.22.0-cp314-cp314t-win_arm64.whl", hash = "sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1"}, - {file = "yarl-1.22.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3aa27acb6de7a23785d81557577491f6c38a5209a254d1191519d07d8fe51748"}, - {file = "yarl-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:af74f05666a5e531289cb1cc9c883d1de2088b8e5b4de48004e5ca8a830ac859"}, - {file = "yarl-1.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:62441e55958977b8167b2709c164c91a6363e25da322d87ae6dd9c6019ceecf9"}, - {file = "yarl-1.22.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b580e71cac3f8113d3135888770903eaf2f507e9421e5697d6ee6d8cd1c7f054"}, - {file = "yarl-1.22.0-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e81fda2fb4a07eda1a2252b216aa0df23ebcd4d584894e9612e80999a78fd95b"}, - {file = "yarl-1.22.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:99b6fc1d55782461b78221e95fc357b47ad98b041e8e20f47c1411d0aacddc60"}, - {file = "yarl-1.22.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:088e4e08f033db4be2ccd1f34cf29fe994772fb54cfe004bbf54db320af56890"}, - {file = "yarl-1.22.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4e1f6f0b4da23e61188676e3ed027ef0baa833a2e633c29ff8530800edccba"}, - {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:84fc3ec96fce86ce5aa305eb4aa9358279d1aa644b71fab7b8ed33fe3ba1a7ca"}, - {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5dbeefd6ca588b33576a01b0ad58aa934bc1b41ef89dee505bf2932b22ddffba"}, - {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14291620375b1060613f4aab9ebf21850058b6b1b438f386cc814813d901c60b"}, - {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:a4fcfc8eb2c34148c118dfa02e6427ca278bfd0f3df7c5f99e33d2c0e81eae3e"}, - {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:029866bde8d7b0878b9c160e72305bbf0a7342bcd20b9999381704ae03308dc8"}, - {file = "yarl-1.22.0-cp39-cp39-win32.whl", hash = "sha256:4dcc74149ccc8bba31ce1944acee24813e93cfdee2acda3c172df844948ddf7b"}, - {file = "yarl-1.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:10619d9fdee46d20edc49d3479e2f8269d0779f1b031e6f7c2aa1c76be04b7ed"}, - {file = "yarl-1.22.0-cp39-cp39-win_arm64.whl", hash = "sha256:dd7afd3f8b0bfb4e0d9fc3c31bfe8a4ec7debe124cfd90619305def3c8ca8cd2"}, - {file = "yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff"}, - {file = "yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71"}, -] - -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" -propcache = ">=0.2.1" - -[metadata] -lock-version = "2.1" -python-versions = "^3.12" -content-hash = "4c3a4cab71273a02c79ee6eb05083476ebb0519f4629dea83a2a5b2c55983183" diff --git a/assets/arc-0062/poetry.toml b/assets/arc-0062/poetry.toml deleted file mode 100644 index ab1033bd3..000000000 --- a/assets/arc-0062/poetry.toml +++ /dev/null @@ -1,2 +0,0 @@ -[virtualenvs] -in-project = true diff --git a/assets/arc-0062/pyproject.toml b/assets/arc-0062/pyproject.toml deleted file mode 100644 index 71c140d92..000000000 --- a/assets/arc-0062/pyproject.toml +++ /dev/null @@ -1,60 +0,0 @@ -[tool.poetry] -name = "arc62" -version = "1.1.0" -description = "ARC-62: ASA Circulating Supply reference implementation" -authors = ["cusma "] -readme = "README.md" -package-mode = false - -[tool.poetry.dependencies] -python = "^3.12" -algokit-utils = "^4.2.2" -python-dotenv = "^1.2.1" -algorand-python = "^3.1.1" - -[tool.poetry.group.dev.dependencies] -algokit-client-generator = "^2.2.0" -black = {extras = ["d"], version = "*"} -ruff = "^0.14.3" -mypy = "^1.18.2" -pytest = "^8.4.2" -pytest-cov = "^7.0.0" -pip-audit = "^2.9.0" -pre-commit = "^4.3.0" -puyapy = "^5.4.0" - -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" - -[tool.ruff] -line-length = 120 -lint.select = ["E", "F", "ANN", "UP", "N", "C4", "B", "A", "YTT", "W", "FBT", "Q", "RUF", "I"] -lint.unfixable = ["B", "RUF"] - -[tool.ruff.lint.flake8-annotations] -allow-star-arg-any = true -suppress-none-returning = true - -[tool.pytest.ini_options] -pythonpath = ["smart_contracts", "tests"] - -[tool.mypy] -files = "smart_contracts/" -python_version = "3.12" -disallow_any_generics = true -disallow_subclassing_any = true -disallow_untyped_calls = true -disallow_untyped_defs = true -disallow_incomplete_defs = true -check_untyped_defs = true -disallow_untyped_decorators = true -warn_redundant_casts = true -warn_unused_ignores = true -warn_return_any = true -strict_equality = true -strict_concatenate = true -disallow_any_unimported = true -disallow_any_expr = true -disallow_any_decorated = true -disallow_any_explicit = true diff --git a/assets/arc-0062/smart_contracts/__init__.py b/assets/arc-0062/smart_contracts/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/assets/arc-0062/smart_contracts/__main__.py b/assets/arc-0062/smart_contracts/__main__.py deleted file mode 100644 index 2a2701889..000000000 --- a/assets/arc-0062/smart_contracts/__main__.py +++ /dev/null @@ -1,211 +0,0 @@ -import dataclasses -import importlib -import logging -import subprocess -import sys -from collections.abc import Callable -from pathlib import Path -from shutil import rmtree - -from algokit_utils.config import config -from dotenv import load_dotenv - -# Set up logging and load environment variables. -logging.basicConfig( - level=logging.INFO, format="%(asctime)s %(levelname)-10s: %(message)s" -) -logger = logging.getLogger(__name__) -logger.info("Loading .env") -load_dotenv() - -# Set trace_all to True to capture all transactions, defaults to capturing traces only on failure -# Learn more about using AlgoKit AVM Debugger to debug your TEAL source codes and inspect various kinds of -# Algorand transactions in atomic groups -> https://github.com/algorandfoundation/algokit-avm-vscode-debugger -config.configure(debug=True, trace_all=False, logger=logger) - -# Determine the root path based on this file's location. -root_path = Path(__file__).parent - -# ----------------------- Contract Configuration ----------------------- # - - -@dataclasses.dataclass -class SmartContract: - path: Path - name: str - deploy: Callable[[], None] | None = None - - -def import_contract(folder: Path) -> Path: - """Imports the contract from a folder if it exists.""" - contract_path = folder / "contract.py" - if contract_path.exists(): - return contract_path - else: - raise Exception(f"Contract not found in {folder}") - - -def import_deploy_if_exists(folder: Path) -> Callable[[], None] | None: - """Imports the deploy function from a folder if it exists.""" - try: - module_name = f"{folder.parent.name}.{folder.name}.deploy_config" - deploy_module = importlib.import_module(module_name) - return deploy_module.deploy # type: ignore[no-any-return, misc] - except ImportError: - return None - - -def has_contract_file(directory: Path) -> bool: - """Checks whether the directory contains a contract.py file.""" - return (directory / "contract.py").exists() - - -# Use the current directory (root_path) as the base for contract folders and exclude -# folders that start with '_' (internal helpers). -contracts: list[SmartContract] = [ - SmartContract( - path=import_contract(folder), - name=folder.name, - deploy=import_deploy_if_exists(folder), - ) - for folder in root_path.iterdir() - if folder.is_dir() and has_contract_file(folder) and not folder.name.startswith("_") -] - -# -------------------------- Build Logic -------------------------- # - -deployment_extension = "py" - - -def _get_output_path(output_dir: Path, deployment_extension: str) -> Path: - """Constructs the output path for the generated client file.""" - return output_dir / Path( - "{contract_name}" - + ("_client" if deployment_extension == "py" else "Client") - + f".{deployment_extension}" - ) - - -def build(output_dir: Path, contract_path: Path) -> Path: - """ - Builds the contract by exporting (compiling) its source and generating a client. - If the output directory already exists, it is cleared. - """ - output_dir = output_dir.resolve() - if output_dir.exists(): - rmtree(output_dir) - output_dir.mkdir(exist_ok=True, parents=True) - logger.info(f"Exporting {contract_path} to {output_dir}") - - build_result = subprocess.run( - [ - "algokit", - "--no-color", - "compile", - "python", - str(contract_path.resolve()), - f"--out-dir={output_dir}", - "--no-output-arc32", - "--output-arc56", - "--output-source-map", - ], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - text=True, - ) - if build_result.returncode: - raise Exception(f"Could not build contract:\n{build_result.stdout}") - - # Look for arc56.json files and generate the client based on them. - app_spec_file_names: list[str] = [ - file.name for file in output_dir.glob("*.arc56.json") - ] - - client_file: str | None = None - if not app_spec_file_names: - logger.warning( - "No '*.arc56.json' file found (likely a logic signature being compiled). Skipping client generation." - ) - else: - for file_name in app_spec_file_names: - client_file = file_name - print(file_name) - generate_result = subprocess.run( - [ - "algokit", - "generate", - "client", - str(output_dir), - "--output", - str(_get_output_path(output_dir, deployment_extension)), - ], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - text=True, - ) - if generate_result.returncode: - if "No such command" in generate_result.stdout: - raise Exception( - "Could not generate typed client, requires AlgoKit 2.0.0 or later. Please update AlgoKit" - ) - else: - raise Exception( - f"Could not generate typed client:\n{generate_result.stdout}" - ) - if client_file: - return output_dir / client_file - return output_dir - - -# --------------------------- Main Logic --------------------------- # - - -def main(action: str, contract_name: str | None = None) -> None: - """Main entry point to build and/or deploy smart contracts.""" - artifact_path = root_path / "artifacts" - # Filter contracts based on an optional specific contract name. - filtered_contracts = [ - contract - for contract in contracts - if contract_name is None or contract.name == contract_name - ] - - match action: - case "build": - for contract in filtered_contracts: - logger.info(f"Building app at {contract.path}") - build(artifact_path / contract.name, contract.path) - case "deploy": - for contract in filtered_contracts: - output_dir = artifact_path / contract.name - app_spec_file_name = next( - ( - file.name - for file in output_dir.iterdir() - if file.is_file() and file.suffixes == [".arc56", ".json"] - ), - None, - ) - if app_spec_file_name is None: - raise Exception("Could not deploy app, .arc56.json file not found") - if contract.deploy: - logger.info(f"Deploying app {contract.name}") - contract.deploy() - case "all": - for contract in filtered_contracts: - logger.info(f"Building app at {contract.path}") - build(artifact_path / contract.name, contract.path) - if contract.deploy: - logger.info(f"Deploying {contract.name}") - contract.deploy() - case _: - logger.error(f"Unknown action: {action}") - - -if __name__ == "__main__": - if len(sys.argv) > 2: - main(sys.argv[1], sys.argv[2]) - elif len(sys.argv) > 1: - main(sys.argv[1]) - else: - main("all") diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.puya.map b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.puya.map deleted file mode 100644 index 8a60602e3..000000000 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.puya.map +++ /dev/null @@ -1,3671 +0,0 @@ -{ - "version": 3, - "sources": [ - "../../circulating_supply/contract.py" - ], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBQ;AAAgB;AAAhB;AAEmB;AAAf;;AADJ;AAImB;AAAf;;AADJ;AAImB;AAAf;;AADJ;AAZR;;AAAA;;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;;;;;;;;;AAAA;;;AAAA;;;;;;;;AAAA;;;;;;;;;;;AAgBK;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUU;;AAAc;AAAA;;AAAA;AAAd;AAAA;;;AAAoC;AAAA;AAAA;AAAA;AAApC;;;;AAAP;AAEA;AAAA;;AAAA;AAZH;AAAA;;;;;AAcA;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;;AASiB;AAAA;AAAA;AAAA;AAEP;;AAAc;;AAAA;;AAAA;AAAd;AAAP;AACO;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AAAP;AAGS;AAEA;AAEA;AALT;;AAAA;;;;;;;;AAQQ;AAFA;AAAA;;AAAA;AApBX;AAAA;AAkBW;AAAA;;AAAA;;;;AAFA;AAAA;;AAAA;;;;;;;;AAQX;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY+B;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAR;AAAA;AAAA;AAAA;AACQ;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAR;AAAA;AAAA;AAAA;AACQ;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAR;AAAA;AAAA;AAAA;AAED;AAAA;AAAA;AAAA;AAAZ;;AAAA;AAAP;AAIO;;AAAA;AAAiB;;AAAjB;AAAA;;;AACI;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAJ;;;AAFH;;;AAOG;;AAAqB;;AAArB;AAAA;;;AACI;;AAAA;;AAAA;;AAAA;;AAAJ;;;AAFH;;;AAOG;;AAAqB;;AAArB;AAAA;;;AACI;;AAAA;;AAAA;;AAAA;;AAAJ;;;AAFH;;;AAOG;AAAqB;;AAArB;AAAA;;;AACI;AAAA;;AAAA;;AAAA;;AAAJ;;;AAFH;AAMA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AA3CP;AAAA;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwCY;AAAA;;AAAA;;AAAA;;;;AANA;;AAAA;;AAAA;;AAAA;;;;;;AANA;;AAAA;;AAAA;;AAAA;;;;;;AANc;;AAAA;AAAA;;AAAA;AAAd;AAAA;;AAAA;;;", - "op_pc_offset": 0, - "pc_events": { - "1": { - "subroutine": "algopy.arc4.ARC4Contract.approval_program", - "params": {}, - "block": "main", - "stack_in": [], - "op": "intcblock 0 1 32 8" - }, - "7": { - "op": "bytecblock \"asset_id\" \"burned\" \"locked\" \"generic\"" - }, - "40": { - "op": "txn ApplicationID", - "defined_out": [ - "tmp%0#0" - ], - "stack_out": [ - "tmp%0#0" - ] - }, - "42": { - "op": "bnz main_after_if_else@2", - "stack_out": [] - }, - "45": { - "op": "bytec_0 // \"asset_id\"", - "defined_out": [ - "\"asset_id\"" - ], - "stack_out": [ - "\"asset_id\"" - ] - }, - "46": { - "op": "intc_0 // 0", - "defined_out": [ - "\"asset_id\"", - "0" - ], - "stack_out": [ - "\"asset_id\"", - "0" - ] - }, - "47": { - "op": "app_global_put", - "stack_out": [] - }, - "48": { - "op": "bytec_1 // \"burned\"", - "defined_out": [ - "\"burned\"" - ], - "stack_out": [ - "\"burned\"" - ] - }, - "49": { - "op": "global ZeroAddress", - "defined_out": [ - "\"burned\"", - "tmp%0#2" - ], - "stack_out": [ - "\"burned\"", - "tmp%0#2" - ] - }, - "51": { - "op": "app_global_put", - "stack_out": [] - }, - "52": { - "op": "bytec_2 // \"locked\"", - "defined_out": [ - "\"locked\"" - ], - "stack_out": [ - "\"locked\"" - ] - }, - "53": { - "op": "global ZeroAddress", - "defined_out": [ - "\"locked\"", - "tmp%1#2" - ], - "stack_out": [ - "\"locked\"", - "tmp%1#2" - ] - }, - "55": { - "op": "app_global_put", - "stack_out": [] - }, - "56": { - "op": "bytec_3 // \"generic\"", - "defined_out": [ - "\"generic\"" - ], - "stack_out": [ - "\"generic\"" - ] - }, - "57": { - "op": "global ZeroAddress", - "defined_out": [ - "\"generic\"", - "tmp%2#1" - ], - "stack_out": [ - "\"generic\"", - "tmp%2#1" - ] - }, - "59": { - "op": "app_global_put", - "stack_out": [] - }, - "60": { - "block": "main_after_if_else@2", - "stack_in": [], - "op": "txn NumAppArgs", - "defined_out": [ - "tmp%0#1" - ], - "stack_out": [ - "tmp%0#1" - ] - }, - "62": { - "op": "bz main___algopy_default_create@12", - "stack_out": [] - }, - "65": { - "op": "txn OnCompletion", - "defined_out": [ - "tmp%2#0" - ], - "stack_out": [ - "tmp%2#0" - ] - }, - "67": { - "op": "!", - "defined_out": [ - "tmp%3#0" - ], - "stack_out": [ - "tmp%3#0" - ] - }, - "68": { - "error": "OnCompletion must be NoOp", - "op": "assert // OnCompletion must be NoOp", - "stack_out": [] - }, - "69": { - "op": "txn ApplicationID", - "defined_out": [ - "tmp%4#0" - ], - "stack_out": [ - "tmp%4#0" - ] - }, - "71": { - "op": "assert", - "stack_out": [] - }, - "72": { - "op": "pushbytess 0x709b80a8 0x0b62c728 0x5cc2c535 // method \"set_asset(uint64)void\", method \"set_not_circulating_address(address,string)void\", method \"arc62_get_circulating_supply(uint64)uint64\"", - "defined_out": [ - "Method(arc62_get_circulating_supply(uint64)uint64)", - "Method(set_asset(uint64)void)", - "Method(set_not_circulating_address(address,string)void)" - ], - "stack_out": [ - "Method(set_asset(uint64)void)", - "Method(set_not_circulating_address(address,string)void)", - "Method(arc62_get_circulating_supply(uint64)uint64)" - ] - }, - "89": { - "op": "txna ApplicationArgs 0", - "defined_out": [ - "Method(arc62_get_circulating_supply(uint64)uint64)", - "Method(set_asset(uint64)void)", - "Method(set_not_circulating_address(address,string)void)", - "tmp%6#0" - ], - "stack_out": [ - "Method(set_asset(uint64)void)", - "Method(set_not_circulating_address(address,string)void)", - "Method(arc62_get_circulating_supply(uint64)uint64)", - "tmp%6#0" - ] - }, - "92": { - "op": "match set_asset set_not_circulating_address arc62_get_circulating_supply", - "stack_out": [] - }, - "100": { - "op": "err" - }, - "101": { - "block": "main___algopy_default_create@12", - "stack_in": [], - "op": "txn OnCompletion", - "defined_out": [ - "tmp%7#0" - ], - "stack_out": [ - "tmp%7#0" - ] - }, - "103": { - "op": "!", - "defined_out": [ - "tmp%8#0" - ], - "stack_out": [ - "tmp%8#0" - ] - }, - "104": { - "op": "txn ApplicationID", - "defined_out": [ - "tmp%8#0", - "tmp%9#0" - ], - "stack_out": [ - "tmp%8#0", - "tmp%9#0" - ] - }, - "106": { - "op": "!", - "defined_out": [ - "tmp%10#0", - "tmp%8#0" - ], - "stack_out": [ - "tmp%8#0", - "tmp%10#0" - ] - }, - "107": { - "op": "&&", - "defined_out": [ - "tmp%11#0" - ], - "stack_out": [ - "tmp%11#0" - ] - }, - "108": { - "error": "OnCompletion must be NoOp && can only call when creating", - "op": "assert // OnCompletion must be NoOp && can only call when creating", - "stack_out": [] - }, - "109": { - "op": "intc_1 // 1", - "defined_out": [ - "1" - ], - "stack_out": [ - "1" - ] - }, - "110": { - "op": "return", - "stack_out": [] - }, - "111": { - "subroutine": "smart_contracts.circulating_supply.contract.CirculatingSupply.set_asset[routing]", - "params": {}, - "block": "set_asset", - "stack_in": [], - "op": "txna ApplicationArgs 1", - "defined_out": [ - "tmp%0#0" - ], - "stack_out": [ - "tmp%0#0" - ] - }, - "114": { - "op": "dup", - "defined_out": [ - "tmp%0#0", - "tmp%0#0 (copy)" - ], - "stack_out": [ - "tmp%0#0", - "tmp%0#0 (copy)" - ] - }, - "115": { - "op": "len", - "defined_out": [ - "len%0#0", - "tmp%0#0" - ], - "stack_out": [ - "tmp%0#0", - "len%0#0" - ] - }, - "116": { - "op": "intc_3 // 8", - "defined_out": [ - "8", - "len%0#0", - "tmp%0#0" - ], - "stack_out": [ - "tmp%0#0", - "len%0#0", - "8" - ] - }, - "117": { - "op": "==", - "defined_out": [ - "eq%0#0", - "tmp%0#0" - ], - "stack_out": [ - "tmp%0#0", - "eq%0#0" - ] - }, - "118": { - "error": "invalid number of bytes for arc4.uint64", - "op": "assert // invalid number of bytes for arc4.uint64", - "stack_out": [ - "tmp%0#0" - ] - }, - "119": { - "op": "btoi", - "defined_out": [ - "asset_id#0" - ], - "stack_out": [ - "asset_id#0" - ] - }, - "120": { - "op": "dup", - "defined_out": [ - "asset_id#0" - ], - "stack_out": [ - "asset_id#0", - "asset_id#0" - ] - }, - "121": { - "op": "txn Sender", - "defined_out": [ - "asset_id#0", - "tmp%0#1" - ], - "stack_out": [ - "asset_id#0", - "asset_id#0", - "tmp%0#1" - ] - }, - "123": { - "op": "swap", - "stack_out": [ - "asset_id#0", - "tmp%0#1", - "asset_id#0" - ] - }, - "124": { - "op": "asset_params_get AssetManager", - "defined_out": [ - "asset_id#0", - "check%0#0", - "tmp%0#1", - "value%0#0" - ], - "stack_out": [ - "asset_id#0", - "tmp%0#1", - "value%0#0", - "check%0#0" - ] - }, - "126": { - "error": "asset exists", - "op": "assert // asset exists", - "stack_out": [ - "asset_id#0", - "tmp%0#1", - "value%0#0" - ] - }, - "127": { - "op": "==", - "defined_out": [ - "asset_id#0", - "tmp%1#1" - ], - "stack_out": [ - "asset_id#0", - "tmp%1#1" - ] - }, - "128": { - "op": "bz set_asset_bool_false@4", - "stack_out": [ - "asset_id#0" - ] - }, - "131": { - "op": "intc_0 // 0", - "stack_out": [ - "asset_id#0", - "0" - ] - }, - "132": { - "op": "bytec_0 // \"asset_id\"", - "defined_out": [ - "\"asset_id\"", - "0", - "asset_id#0" - ], - "stack_out": [ - "asset_id#0", - "0", - "\"asset_id\"" - ] - }, - "133": { - "op": "app_global_get_ex", - "defined_out": [ - "asset_id#0", - "maybe_exists%0#0", - "maybe_value%0#0" - ], - "stack_out": [ - "asset_id#0", - "maybe_value%0#0", - "maybe_exists%0#0" - ] - }, - "134": { - "error": "check self.asset_id exists", - "op": "assert // check self.asset_id exists", - "stack_out": [ - "asset_id#0", - "maybe_value%0#0" - ] - }, - "135": { - "op": "bnz set_asset_bool_false@4", - "stack_out": [ - "asset_id#0" - ] - }, - "138": { - "op": "intc_1 // 1", - "defined_out": [ - "and_result%0#0", - "asset_id#0" - ], - "stack_out": [ - "asset_id#0", - "and_result%0#0" - ] - }, - "139": { - "error": "Unauthorized", - "block": "set_asset_bool_merge@5", - "stack_in": [ - "asset_id#0", - "and_result%0#0" - ], - "op": "assert // Unauthorized", - "defined_out": [], - "stack_out": [ - "asset_id#0" - ] - }, - "140": { - "op": "bytec_0 // \"asset_id\"", - "defined_out": [ - "\"asset_id\"" - ], - "stack_out": [ - "asset_id#0", - "\"asset_id\"" - ] - }, - "141": { - "op": "dig 1", - "defined_out": [ - "\"asset_id\"", - "asset_id#0" - ], - "stack_out": [ - "asset_id#0", - "\"asset_id\"", - "asset_id#0" - ] - }, - "143": { - "op": "app_global_put", - "stack_out": [ - "asset_id#0" - ] - }, - "144": { - "op": "intc_1 // 1", - "defined_out": [ - "1", - "asset_id#0" - ], - "stack_out": [ - "asset_id#0", - "1" - ] - }, - "145": { - "op": "return", - "stack_out": [ - "asset_id#0" - ] - }, - "146": { - "block": "set_asset_bool_false@4", - "stack_in": [ - "asset_id#0" - ], - "op": "intc_0 // 0", - "defined_out": [ - "and_result%0#0" - ], - "stack_out": [ - "asset_id#0", - "and_result%0#0" - ] - }, - "147": { - "op": "b set_asset_bool_merge@5" - }, - "150": { - "subroutine": "smart_contracts.circulating_supply.contract.CirculatingSupply.set_not_circulating_address[routing]", - "params": {}, - "block": "set_not_circulating_address", - "stack_in": [], - "op": "txna ApplicationArgs 1" - }, - "153": { - "op": "dupn 2", - "defined_out": [ - "address#0", - "address#0 (copy)" - ], - "stack_out": [ - "address#0", - "address#0", - "address#0 (copy)" - ] - }, - "155": { - "op": "len", - "defined_out": [ - "address#0", - "len%0#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0" - ] - }, - "156": { - "op": "dup", - "defined_out": [ - "address#0", - "len%0#0", - "len%0#0 (copy)" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "len%0#0 (copy)" - ] - }, - "157": { - "op": "intc_2 // 32", - "defined_out": [ - "32", - "address#0", - "len%0#0", - "len%0#0 (copy)" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "len%0#0 (copy)", - "32" - ] - }, - "158": { - "op": "==", - "defined_out": [ - "address#0", - "eq%0#0", - "len%0#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "eq%0#0" - ] - }, - "159": { - "error": "invalid number of bytes for arc4.static_array", - "op": "assert // invalid number of bytes for arc4.static_array", - "stack_out": [ - "address#0", - "address#0", - "len%0#0" - ] - }, - "160": { - "op": "txna ApplicationArgs 2", - "defined_out": [ - "address#0", - "len%0#0", - "tmp%1#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0" - ] - }, - "163": { - "op": "dup", - "defined_out": [ - "address#0", - "len%0#0", - "tmp%1#0", - "tmp%1#0 (copy)" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "tmp%1#0 (copy)" - ] - }, - "164": { - "op": "intc_0 // 0", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "tmp%1#0 (copy)", - "0" - ] - }, - "165": { - "error": "invalid array length header", - "op": "extract_uint16 // on error: invalid array length header", - "defined_out": [ - "address#0", - "aggregate%array_length%0#0", - "len%0#0", - "tmp%1#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "aggregate%array_length%0#0" - ] - }, - "166": { - "op": "pushint 2 // 2", - "defined_out": [ - "2", - "address#0", - "aggregate%array_length%0#0", - "len%0#0", - "tmp%1#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "aggregate%array_length%0#0", - "2" - ] - }, - "168": { - "op": "+", - "defined_out": [ - "add%0#0", - "address#0", - "len%0#0", - "tmp%1#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "add%0#0" - ] - }, - "169": { - "op": "dig 1", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "add%0#0", - "tmp%1#0 (copy)" - ] - }, - "171": { - "op": "len", - "defined_out": [ - "add%0#0", - "address#0", - "len%0#0", - "len%1#0", - "tmp%1#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "add%0#0", - "len%1#0" - ] - }, - "172": { - "op": "==", - "defined_out": [ - "address#0", - "eq%1#0", - "len%0#0", - "tmp%1#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0", - "eq%1#0" - ] - }, - "173": { - "error": "invalid number of bytes for arc4.dynamic_array", - "op": "assert // invalid number of bytes for arc4.dynamic_array", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "tmp%1#0" - ] - }, - "174": { - "op": "extract 2 0", - "defined_out": [ - "address#0", - "label#0", - "len%0#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0" - ] - }, - "177": { - "op": "intc_0 // 0", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "0" - ] - }, - "178": { - "op": "bytec_0 // \"asset_id\"", - "defined_out": [ - "\"asset_id\"", - "0", - "address#0", - "label#0", - "len%0#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "0", - "\"asset_id\"" - ] - }, - "179": { - "op": "app_global_get_ex", - "defined_out": [ - "address#0", - "asset#0", - "label#0", - "len%0#0", - "maybe_exists%0#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0", - "maybe_exists%0#0" - ] - }, - "180": { - "error": "check self.asset_id exists", - "op": "assert // check self.asset_id exists", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0" - ] - }, - "181": { - "op": "txn Sender", - "defined_out": [ - "address#0", - "asset#0", - "label#0", - "len%0#0", - "tmp%0#1" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0", - "tmp%0#1" - ] - }, - "183": { - "op": "dig 1", - "defined_out": [ - "address#0", - "asset#0", - "asset#0 (copy)", - "label#0", - "len%0#0", - "tmp%0#1" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0", - "tmp%0#1", - "asset#0 (copy)" - ] - }, - "185": { - "op": "asset_params_get AssetManager", - "defined_out": [ - "address#0", - "asset#0", - "check%0#0", - "label#0", - "len%0#0", - "tmp%0#1", - "value%0#0" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0", - "tmp%0#1", - "value%0#0", - "check%0#0" - ] - }, - "187": { - "error": "asset exists", - "op": "assert // asset exists", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0", - "tmp%0#1", - "value%0#0" - ] - }, - "188": { - "op": "==", - "defined_out": [ - "address#0", - "asset#0", - "label#0", - "len%0#0", - "tmp%1#1" - ], - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0", - "tmp%1#1" - ] - }, - "189": { - "error": "Unauthorized", - "op": "assert // Unauthorized", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0" - ] - }, - "190": { - "op": "intc_2 // 32", - "stack_out": [ - "address#0", - "address#0", - "len%0#0", - "label#0", - "asset#0", - "32" - ] - }, - "191": { - "op": "uncover 3", - "stack_out": [ - "address#0", - "address#0", - "label#0", - "asset#0", - "32", - "len%0#0" - ] - }, - "193": { - "op": "==", - "defined_out": [ - "address#0", - "asset#0", - "label#0", - "tmp%3#0" - ], - "stack_out": [ - "address#0", - "address#0", - "label#0", - "asset#0", - "tmp%3#0" - ] - }, - "194": { - "error": "Address length is 32 bytes", - "op": "assert // Address length is 32 bytes", - "stack_out": [ - "address#0", - "address#0", - "label#0", - "asset#0" - ] - }, - "195": { - "op": "uncover 2", - "stack_out": [ - "address#0", - "label#0", - "asset#0", - "address#0" - ] - }, - "197": { - "op": "swap", - "stack_out": [ - "address#0", - "label#0", - "address#0", - "asset#0" - ] - }, - "198": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "address#0", - "label#0", - "tmp%4#0", - "tmp%5#0" - ], - "stack_out": [ - "address#0", - "label#0", - "tmp%4#0", - "tmp%5#0" - ] - }, - "200": { - "op": "bury 1", - "stack_out": [ - "address#0", - "label#0", - "tmp%5#0" - ] - }, - "202": { - "error": "Not Opted-In", - "op": "assert // Not Opted-In", - "stack_out": [ - "address#0", - "label#0" - ] - }, - "203": { - "op": "bytec_1 // \"burned\"", - "defined_out": [ - "\"burned\"", - "address#0", - "label#0" - ], - "stack_out": [ - "address#0", - "label#0", - "\"burned\"" - ] - }, - "204": { - "op": "bytec_2 // \"locked\"", - "defined_out": [ - "\"burned\"", - "\"locked\"", - "address#0", - "label#0" - ], - "stack_out": [ - "address#0", - "label#0", - "\"burned\"", - "\"locked\"" - ] - }, - "205": { - "op": "bytec_3 // \"generic\"", - "defined_out": [ - "\"burned\"", - "\"generic\"", - "\"locked\"", - "address#0", - "label#0" - ], - "stack_out": [ - "address#0", - "label#0", - "\"burned\"", - "\"locked\"", - "\"generic\"" - ] - }, - "206": { - "op": "uncover 3", - "stack_out": [ - "address#0", - "\"burned\"", - "\"locked\"", - "\"generic\"", - "label#0" - ] - }, - "208": { - "op": "match set_not_circulating_address_switch_case_0@2 set_not_circulating_address_switch_case_1@3 set_not_circulating_address_switch_case_2@4", - "stack_out": [ - "address#0" - ] - }, - "216": { - "error": "Invalid Label", - "op": "err // Invalid Label" - }, - "217": { - "block": "set_not_circulating_address_switch_case_2@4", - "stack_in": [ - "address#0" - ], - "op": "bytec_3 // \"generic\"", - "defined_out": [ - "\"generic\"" - ], - "stack_out": [ - "address#0", - "\"generic\"" - ] - }, - "218": { - "op": "dig 1", - "defined_out": [ - "\"generic\"", - "address#0" - ], - "stack_out": [ - "address#0", - "\"generic\"", - "address#0" - ] - }, - "220": { - "op": "app_global_put", - "stack_out": [ - "address#0" - ] - }, - "221": { - "block": "set_not_circulating_address_switch_case_next@6", - "stack_in": [ - "address#0" - ], - "op": "intc_1 // 1", - "defined_out": [ - "1" - ], - "stack_out": [ - "address#0", - "1" - ] - }, - "222": { - "op": "return", - "stack_out": [ - "address#0" - ] - }, - "223": { - "block": "set_not_circulating_address_switch_case_1@3", - "stack_in": [ - "address#0" - ], - "op": "bytec_2 // \"locked\"", - "defined_out": [ - "\"locked\"" - ], - "stack_out": [ - "address#0", - "\"locked\"" - ] - }, - "224": { - "op": "dig 1", - "defined_out": [ - "\"locked\"", - "address#0" - ], - "stack_out": [ - "address#0", - "\"locked\"", - "address#0" - ] - }, - "226": { - "op": "app_global_put", - "stack_out": [ - "address#0" - ] - }, - "227": { - "op": "b set_not_circulating_address_switch_case_next@6" - }, - "230": { - "block": "set_not_circulating_address_switch_case_0@2", - "stack_in": [ - "address#0" - ], - "op": "bytec_1 // \"burned\"", - "defined_out": [ - "\"burned\"" - ], - "stack_out": [ - "address#0", - "\"burned\"" - ] - }, - "231": { - "op": "dig 1", - "defined_out": [ - "\"burned\"", - "address#0" - ], - "stack_out": [ - "address#0", - "\"burned\"", - "address#0" - ] - }, - "233": { - "op": "app_global_put", - "stack_out": [ - "address#0" - ] - }, - "234": { - "op": "b set_not_circulating_address_switch_case_next@6" - }, - "237": { - "subroutine": "smart_contracts.circulating_supply.contract.CirculatingSupply.arc62_get_circulating_supply[routing]", - "params": {}, - "block": "arc62_get_circulating_supply", - "stack_in": [], - "op": "pushbytes \"\"", - "stack_out": [ - "not_circulating_balance_1#0" - ] - }, - "239": { - "op": "dupn 2", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0" - ] - }, - "241": { - "op": "txna ApplicationArgs 1", - "defined_out": [ - "tmp%0#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%0#0" - ] - }, - "244": { - "op": "dup", - "defined_out": [ - "tmp%0#0", - "tmp%0#0 (copy)" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%0#0", - "tmp%0#0 (copy)" - ] - }, - "245": { - "op": "len", - "defined_out": [ - "len%0#0", - "tmp%0#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%0#0", - "len%0#0" - ] - }, - "246": { - "op": "intc_3 // 8", - "defined_out": [ - "8", - "len%0#0", - "tmp%0#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%0#0", - "len%0#0", - "8" - ] - }, - "247": { - "op": "==", - "defined_out": [ - "eq%0#0", - "tmp%0#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%0#0", - "eq%0#0" - ] - }, - "248": { - "error": "invalid number of bytes for arc4.uint64", - "op": "assert // invalid number of bytes for arc4.uint64", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%0#0" - ] - }, - "249": { - "op": "btoi", - "defined_out": [ - "asset_id#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0" - ] - }, - "250": { - "op": "dup", - "defined_out": [ - "asset_id#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "asset_id#0" - ] - }, - "251": { - "op": "intc_0 // 0", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "asset_id#0", - "0" - ] - }, - "252": { - "op": "bytec_1 // \"burned\"", - "defined_out": [ - "\"burned\"", - "0", - "asset_id#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "asset_id#0", - "0", - "\"burned\"" - ] - }, - "253": { - "op": "app_global_get_ex", - "defined_out": [ - "asset_id#0", - "maybe_exists%0#0", - "not_circulating_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "asset_id#0", - "not_circulating_1#0", - "maybe_exists%0#0" - ] - }, - "254": { - "op": "swap", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "asset_id#0", - "maybe_exists%0#0", - "not_circulating_1#0" - ] - }, - "255": { - "op": "dup", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "asset_id#0", - "maybe_exists%0#0", - "not_circulating_1#0", - "not_circulating_1#0 (copy)" - ] - }, - "256": { - "op": "cover 2", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "asset_id#0", - "not_circulating_1#0", - "maybe_exists%0#0", - "not_circulating_1#0" - ] - }, - "258": { - "op": "cover 3", - "defined_out": [ - "asset_id#0", - "maybe_exists%0#0", - "not_circulating_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "not_circulating_1#0", - "maybe_exists%0#0" - ] - }, - "260": { - "error": "check self.not_circulating_label_1 exists", - "op": "assert // check self.not_circulating_label_1 exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "not_circulating_1#0" - ] - }, - "261": { - "op": "len", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "tmp%0#1" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "tmp%0#1" - ] - }, - "262": { - "op": "intc_2 // 32", - "defined_out": [ - "32", - "asset_id#0", - "not_circulating_1#0", - "tmp%0#1" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "tmp%0#1", - "32" - ] - }, - "263": { - "op": "==", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "tmp%1#1" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "tmp%1#1" - ] - }, - "264": { - "error": "Address length is 32 bytes", - "op": "assert // Address length is 32 bytes", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0" - ] - }, - "265": { - "op": "intc_0 // 0", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "0" - ] - }, - "266": { - "op": "bytec_2 // \"locked\"", - "defined_out": [ - "\"locked\"", - "0", - "asset_id#0", - "not_circulating_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "0", - "\"locked\"" - ] - }, - "267": { - "op": "app_global_get_ex", - "defined_out": [ - "asset_id#0", - "maybe_exists%1#0", - "not_circulating_1#0", - "not_circulating_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "not_circulating_2#0", - "maybe_exists%1#0" - ] - }, - "268": { - "op": "swap", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "maybe_exists%1#0", - "not_circulating_2#0" - ] - }, - "269": { - "op": "dup", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "maybe_exists%1#0", - "not_circulating_2#0", - "not_circulating_2#0 (copy)" - ] - }, - "270": { - "op": "cover 2", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "asset_id#0", - "not_circulating_2#0", - "maybe_exists%1#0", - "not_circulating_2#0" - ] - }, - "272": { - "op": "cover 3", - "defined_out": [ - "asset_id#0", - "maybe_exists%1#0", - "not_circulating_1#0", - "not_circulating_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "not_circulating_2#0", - "maybe_exists%1#0" - ] - }, - "274": { - "error": "check self.not_circulating_label_2 exists", - "op": "assert // check self.not_circulating_label_2 exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "not_circulating_2#0" - ] - }, - "275": { - "op": "len", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "tmp%2#1" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "tmp%2#1" - ] - }, - "276": { - "op": "intc_2 // 32", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "tmp%2#1", - "32" - ] - }, - "277": { - "op": "==", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "tmp%3#1" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "tmp%3#1" - ] - }, - "278": { - "error": "Address length is 32 bytes", - "op": "assert // Address length is 32 bytes", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0" - ] - }, - "279": { - "op": "intc_0 // 0", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "0" - ] - }, - "280": { - "op": "bytec_3 // \"generic\"", - "defined_out": [ - "\"generic\"", - "0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "0", - "\"generic\"" - ] - }, - "281": { - "op": "app_global_get_ex", - "defined_out": [ - "asset_id#0", - "maybe_exists%2#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "not_circulating_3#0", - "maybe_exists%2#0" - ] - }, - "282": { - "op": "swap", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "maybe_exists%2#0", - "not_circulating_3#0" - ] - }, - "283": { - "op": "dup", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "maybe_exists%2#0", - "not_circulating_3#0", - "not_circulating_3#0 (copy)" - ] - }, - "284": { - "op": "cover 2", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "asset_id#0", - "not_circulating_3#0", - "maybe_exists%2#0", - "not_circulating_3#0" - ] - }, - "286": { - "op": "cover 3", - "defined_out": [ - "asset_id#0", - "maybe_exists%2#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "not_circulating_3#0", - "maybe_exists%2#0" - ] - }, - "288": { - "error": "check self.not_circulating_label_3 exists", - "op": "assert // check self.not_circulating_label_3 exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "not_circulating_3#0" - ] - }, - "289": { - "op": "len", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%4#1" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "tmp%4#1" - ] - }, - "290": { - "op": "intc_2 // 32", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "tmp%4#1", - "32" - ] - }, - "291": { - "op": "==", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%5#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "tmp%5#0" - ] - }, - "292": { - "error": "Address length is 32 bytes", - "op": "assert // Address length is 32 bytes", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0" - ] - }, - "293": { - "op": "intc_0 // 0", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "0" - ] - }, - "294": { - "op": "bytec_0 // \"asset_id\"", - "defined_out": [ - "\"asset_id\"", - "0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "0", - "\"asset_id\"" - ] - }, - "295": { - "op": "app_global_get_ex", - "defined_out": [ - "asset_id#0", - "maybe_exists%3#0", - "maybe_value%3#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "maybe_value%3#0", - "maybe_exists%3#0" - ] - }, - "296": { - "error": "check self.asset_id exists", - "op": "assert // check self.asset_id exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "maybe_value%3#0" - ] - }, - "297": { - "op": "dig 1", - "defined_out": [ - "asset_id#0", - "asset_id#0 (copy)", - "maybe_value%3#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "maybe_value%3#0", - "asset_id#0 (copy)" - ] - }, - "299": { - "op": "==", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%6#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "tmp%6#0" - ] - }, - "300": { - "error": "Invalid ASA ID", - "op": "assert // Invalid ASA ID", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0" - ] - }, - "301": { - "op": "asset_params_get AssetReserve", - "defined_out": [ - "asset_id#0", - "check%0#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%0#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%0#0", - "check%0#0" - ] - }, - "303": { - "error": "asset exists", - "op": "assert // asset exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%0#0" - ] - }, - "304": { - "op": "global ZeroAddress", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%7#0", - "value%0#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%0#0", - "tmp%7#0" - ] - }, - "306": { - "op": "==", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%8#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%8#0" - ] - }, - "307": { - "op": "bnz arc62_get_circulating_supply_ternary_true@3", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "310": { - "op": "dig 3", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0" - ] - }, - "312": { - "op": "dup", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "asset_id#0 (copy)" - ] - }, - "313": { - "op": "asset_params_get AssetReserve", - "defined_out": [ - "asset_id#0", - "check%1#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "value%1#0", - "check%1#0" - ] - }, - "315": { - "error": "asset exists", - "op": "assert // asset exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "value%1#0" - ] - }, - "316": { - "op": "swap", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%1#0", - "asset_id#0" - ] - }, - "317": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%10#0", - "tmp%9#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%9#0", - "tmp%10#0" - ] - }, - "319": { - "op": "bury 1", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%10#0" - ] - }, - "321": { - "op": "bnz arc62_get_circulating_supply_ternary_false@4", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "324": { - "block": "arc62_get_circulating_supply_ternary_true@3", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "intc_0 // 0", - "defined_out": [ - "reserve_balance#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "reserve_balance#0" - ] - }, - "325": { - "op": "bury 5", - "defined_out": [ - "reserve_balance#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "327": { - "block": "arc62_get_circulating_supply_ternary_merge@5", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "dig 2", - "defined_out": [ - "not_circulating_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_1#0" - ] - }, - "329": { - "op": "global ZeroAddress", - "defined_out": [ - "not_circulating_1#0", - "tmp%11#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_1#0", - "tmp%11#0" - ] - }, - "331": { - "op": "==", - "defined_out": [ - "not_circulating_1#0", - "tmp%12#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%12#0" - ] - }, - "332": { - "op": "bnz arc62_get_circulating_supply_ternary_true@7", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "335": { - "op": "dig 2", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_1#0" - ] - }, - "337": { - "op": "dig 4", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_1#0", - "asset_id#0" - ] - }, - "339": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "tmp%13#0", - "tmp%14#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%13#0", - "tmp%14#0" - ] - }, - "341": { - "op": "bury 1", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%14#0" - ] - }, - "343": { - "op": "bnz arc62_get_circulating_supply_ternary_false@8", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "346": { - "block": "arc62_get_circulating_supply_ternary_true@7", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "intc_0 // 0", - "defined_out": [ - "not_circulating_balance_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_1#0" - ] - }, - "347": { - "op": "bury 7", - "defined_out": [ - "not_circulating_balance_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "349": { - "block": "arc62_get_circulating_supply_ternary_merge@9", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "dig 1", - "defined_out": [ - "not_circulating_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_2#0" - ] - }, - "351": { - "op": "global ZeroAddress", - "defined_out": [ - "not_circulating_2#0", - "tmp%15#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_2#0", - "tmp%15#0" - ] - }, - "353": { - "op": "==", - "defined_out": [ - "not_circulating_2#0", - "tmp%16#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%16#0" - ] - }, - "354": { - "op": "bnz arc62_get_circulating_supply_ternary_true@11", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "357": { - "op": "dig 1", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_2#0" - ] - }, - "359": { - "op": "dig 4", - "defined_out": [ - "asset_id#0", - "not_circulating_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_2#0", - "asset_id#0" - ] - }, - "361": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "not_circulating_2#0", - "tmp%17#0", - "tmp%18#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%17#0", - "tmp%18#0" - ] - }, - "363": { - "op": "bury 1", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%18#0" - ] - }, - "365": { - "op": "bnz arc62_get_circulating_supply_ternary_false@12", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "368": { - "block": "arc62_get_circulating_supply_ternary_true@11", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "intc_0 // 0", - "defined_out": [ - "not_circulating_balance_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_2#0" - ] - }, - "369": { - "op": "bury 6", - "defined_out": [ - "not_circulating_balance_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "371": { - "block": "arc62_get_circulating_supply_ternary_merge@13", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "dup" - }, - "372": { - "op": "global ZeroAddress", - "defined_out": [ - "not_circulating_3#0", - "tmp%19#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_3#0", - "tmp%19#0" - ] - }, - "374": { - "op": "==", - "defined_out": [ - "not_circulating_3#0", - "tmp%20#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%20#0" - ] - }, - "375": { - "op": "bnz arc62_get_circulating_supply_ternary_true@15", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "378": { - "op": "dup", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_3#0" - ] - }, - "379": { - "op": "dig 4", - "defined_out": [ - "asset_id#0", - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_3#0", - "asset_id#0" - ] - }, - "381": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "not_circulating_3#0", - "tmp%21#0", - "tmp%22#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%21#0", - "tmp%22#0" - ] - }, - "383": { - "op": "bury 1", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%22#0" - ] - }, - "385": { - "op": "bnz arc62_get_circulating_supply_ternary_false@16", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "388": { - "block": "arc62_get_circulating_supply_ternary_true@15", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "intc_0 // 0", - "defined_out": [ - "not_circulating_balance_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0" - ] - }, - "389": { - "block": "arc62_get_circulating_supply_ternary_merge@17", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0" - ], - "op": "dig 4", - "defined_out": [ - "asset_id#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "asset_id#0" - ] - }, - "391": { - "op": "asset_params_get AssetTotal", - "defined_out": [ - "asset_id#0", - "check%7#0", - "value%7#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "value%7#0", - "check%7#0" - ] - }, - "393": { - "error": "asset exists", - "op": "assert // asset exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "value%7#0" - ] - }, - "394": { - "op": "dig 6", - "defined_out": [ - "asset_id#0", - "reserve_balance#0", - "value%7#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "value%7#0", - "reserve_balance#0" - ] - }, - "396": { - "op": "-", - "defined_out": [ - "asset_id#0", - "reserve_balance#0", - "tmp%23#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "tmp%23#0" - ] - }, - "397": { - "op": "dig 8", - "defined_out": [ - "asset_id#0", - "not_circulating_balance_1#0", - "reserve_balance#0", - "tmp%23#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "tmp%23#0", - "not_circulating_balance_1#0" - ] - }, - "399": { - "op": "-", - "defined_out": [ - "asset_id#0", - "not_circulating_balance_1#0", - "reserve_balance#0", - "tmp%24#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "tmp%24#0" - ] - }, - "400": { - "op": "dig 7", - "defined_out": [ - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%24#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "tmp%24#0", - "not_circulating_balance_2#0" - ] - }, - "402": { - "op": "-", - "defined_out": [ - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%25#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0", - "tmp%25#0" - ] - }, - "403": { - "op": "swap", - "defined_out": [ - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "not_circulating_balance_3#0", - "reserve_balance#0", - "tmp%25#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%25#0", - "not_circulating_balance_3#0" - ] - }, - "404": { - "op": "-", - "defined_out": [ - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%26#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%26#0" - ] - }, - "405": { - "op": "itob", - "defined_out": [ - "aggregate%val_as_bytes%0#0", - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "aggregate%val_as_bytes%0#0" - ] - }, - "406": { - "op": "pushbytes 0x151f7c75", - "defined_out": [ - "0x151f7c75", - "aggregate%val_as_bytes%0#0", - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "aggregate%val_as_bytes%0#0", - "0x151f7c75" - ] - }, - "412": { - "op": "swap", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "0x151f7c75", - "aggregate%val_as_bytes%0#0" - ] - }, - "413": { - "op": "concat", - "defined_out": [ - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "tmp%4#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "tmp%4#0" - ] - }, - "414": { - "op": "log", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "415": { - "op": "intc_1 // 1", - "defined_out": [ - "1", - "asset_id#0", - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "1" - ] - }, - "416": { - "op": "return", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "417": { - "block": "arc62_get_circulating_supply_ternary_false@16", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "dup", - "defined_out": [ - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_3#0" - ] - }, - "418": { - "op": "dig 4", - "defined_out": [ - "asset_id#0", - "not_circulating_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_3#0", - "asset_id#0" - ] - }, - "420": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "check%6#0", - "not_circulating_3#0", - "value%6#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%6#0", - "check%6#0" - ] - }, - "422": { - "error": "account opted into asset", - "op": "assert // account opted into asset", - "defined_out": [ - "asset_id#0", - "not_circulating_3#0", - "not_circulating_balance_3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_3#0" - ] - }, - "423": { - "op": "b arc62_get_circulating_supply_ternary_merge@17" - }, - "426": { - "block": "arc62_get_circulating_supply_ternary_false@12", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "dig 1", - "defined_out": [ - "not_circulating_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_2#0" - ] - }, - "428": { - "op": "dig 4", - "defined_out": [ - "asset_id#0", - "not_circulating_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_2#0", - "asset_id#0" - ] - }, - "430": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "check%5#0", - "not_circulating_2#0", - "value%5#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%5#0", - "check%5#0" - ] - }, - "432": { - "error": "account opted into asset", - "op": "assert // account opted into asset", - "defined_out": [ - "asset_id#0", - "not_circulating_2#0", - "not_circulating_balance_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_2#0" - ] - }, - "433": { - "op": "bury 6", - "defined_out": [ - "asset_id#0", - "not_circulating_2#0", - "not_circulating_balance_2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "435": { - "op": "b arc62_get_circulating_supply_ternary_merge@13" - }, - "438": { - "block": "arc62_get_circulating_supply_ternary_false@8", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "dig 2", - "defined_out": [ - "not_circulating_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_1#0" - ] - }, - "440": { - "op": "dig 4", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_1#0", - "asset_id#0" - ] - }, - "442": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "check%4#0", - "not_circulating_1#0", - "value%4#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%4#0", - "check%4#0" - ] - }, - "444": { - "error": "account opted into asset", - "op": "assert // account opted into asset", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_balance_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "not_circulating_balance_1#0" - ] - }, - "445": { - "op": "bury 7", - "defined_out": [ - "asset_id#0", - "not_circulating_1#0", - "not_circulating_balance_1#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "447": { - "op": "b arc62_get_circulating_supply_ternary_merge@9" - }, - "450": { - "block": "arc62_get_circulating_supply_ternary_false@4", - "stack_in": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ], - "op": "dig 3", - "defined_out": [ - "asset_id#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0" - ] - }, - "452": { - "op": "dup", - "defined_out": [ - "asset_id#0", - "asset_id#0 (copy)" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "asset_id#0 (copy)" - ] - }, - "453": { - "op": "asset_params_get AssetReserve", - "defined_out": [ - "asset_id#0", - "check%2#0", - "value%2#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "value%2#0", - "check%2#0" - ] - }, - "455": { - "error": "asset exists", - "op": "assert // asset exists", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "asset_id#0", - "value%2#0" - ] - }, - "456": { - "op": "swap", - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%2#0", - "asset_id#0" - ] - }, - "457": { - "op": "asset_holding_get AssetBalance", - "defined_out": [ - "asset_id#0", - "check%3#0", - "value%3#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "value%3#0", - "check%3#0" - ] - }, - "459": { - "error": "account opted into asset", - "op": "assert // account opted into asset", - "defined_out": [ - "asset_id#0", - "reserve_balance#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0", - "reserve_balance#0" - ] - }, - "460": { - "op": "bury 5", - "defined_out": [ - "asset_id#0", - "reserve_balance#0" - ], - "stack_out": [ - "not_circulating_balance_1#0", - "not_circulating_balance_2#0", - "reserve_balance#0", - "asset_id#0", - "not_circulating_1#0", - "not_circulating_2#0", - "not_circulating_3#0" - ] - }, - "462": { - "op": "b arc62_get_circulating_supply_ternary_merge@5" - } - } -} \ No newline at end of file diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal deleted file mode 100644 index 1f54ab811..000000000 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal +++ /dev/null @@ -1,469 +0,0 @@ -#pragma version 11 -#pragma typetrack false - -// algopy.arc4.ARC4Contract.approval_program() -> uint64: -main: - intcblock 0 1 32 8 - bytecblock "asset_id" "burned" "locked" "generic" - txn ApplicationID - bnz main_after_if_else@2 - // smart_contracts/circulating_supply/contract.py:24-25 - // # Global State - // self.asset_id = UInt64() - bytec_0 // "asset_id" - intc_0 // 0 - app_global_put - // smart_contracts/circulating_supply/contract.py:27 - // Address(), key=cfg.NOT_CIRCULATING_LABEL_1 - bytec_1 // "burned" - global ZeroAddress - // smart_contracts/circulating_supply/contract.py:26-28 - // self.not_circulating_label_1 = GlobalState( - // Address(), key=cfg.NOT_CIRCULATING_LABEL_1 - // ) - app_global_put - // smart_contracts/circulating_supply/contract.py:30 - // Address(), key=cfg.NOT_CIRCULATING_LABEL_2 - bytec_2 // "locked" - global ZeroAddress - // smart_contracts/circulating_supply/contract.py:29-31 - // self.not_circulating_label_2 = GlobalState( - // Address(), key=cfg.NOT_CIRCULATING_LABEL_2 - // ) - app_global_put - // smart_contracts/circulating_supply/contract.py:33 - // Address(), key=cfg.NOT_CIRCULATING_LABEL_3 - bytec_3 // "generic" - global ZeroAddress - // smart_contracts/circulating_supply/contract.py:32-34 - // self.not_circulating_label_3 = GlobalState( - // Address(), key=cfg.NOT_CIRCULATING_LABEL_3 - // ) - app_global_put - -main_after_if_else@2: - // smart_contracts/circulating_supply/contract.py:20 - // class CirculatingSupply(ARC4Contract): - txn NumAppArgs - bz main___algopy_default_create@12 - txn OnCompletion - ! - assert // OnCompletion must be NoOp - txn ApplicationID - assert - pushbytess 0x709b80a8 0x0b62c728 0x5cc2c535 // method "set_asset(uint64)void", method "set_not_circulating_address(address,string)void", method "arc62_get_circulating_supply(uint64)uint64" - txna ApplicationArgs 0 - match set_asset set_not_circulating_address arc62_get_circulating_supply - err - -main___algopy_default_create@12: - txn OnCompletion - ! - txn ApplicationID - ! - && - assert // OnCompletion must be NoOp && can only call when creating - intc_1 // 1 - return - - -// smart_contracts.circulating_supply.contract.CirculatingSupply.set_asset[routing]() -> void: -set_asset: - // smart_contracts/circulating_supply/contract.py:36 - // @abimethod() - txna ApplicationArgs 1 - dup - len - intc_3 // 8 - == - assert // invalid number of bytes for arc4.uint64 - btoi - dup - // smart_contracts/circulating_supply/contract.py:45-46 - // # Preconditions - // assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED - txn Sender - swap - asset_params_get AssetManager - assert // asset exists - == - bz set_asset_bool_false@4 - intc_0 // 0 - bytec_0 // "asset_id" - app_global_get_ex - assert // check self.asset_id exists - bnz set_asset_bool_false@4 - intc_1 // 1 - -set_asset_bool_merge@5: - // smart_contracts/circulating_supply/contract.py:45-46 - // # Preconditions - // assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED - assert // Unauthorized - // smart_contracts/circulating_supply/contract.py:47-48 - // # Effects - // self.asset_id = asset_id - bytec_0 // "asset_id" - dig 1 - app_global_put - // smart_contracts/circulating_supply/contract.py:36 - // @abimethod() - intc_1 // 1 - return - -set_asset_bool_false@4: - intc_0 // 0 - b set_asset_bool_merge@5 - - -// smart_contracts.circulating_supply.contract.CirculatingSupply.set_not_circulating_address[routing]() -> void: -set_not_circulating_address: - // smart_contracts/circulating_supply/contract.py:50 - // @abimethod() - txna ApplicationArgs 1 - dupn 2 - len - dup - intc_2 // 32 - == - assert // invalid number of bytes for arc4.static_array - txna ApplicationArgs 2 - dup - intc_0 // 0 - extract_uint16 // on error: invalid array length header - pushint 2 // 2 - + - dig 1 - len - == - assert // invalid number of bytes for arc4.dynamic_array - extract 2 0 - // smart_contracts/circulating_supply/contract.py:59 - // asset = Asset(self.asset_id) - intc_0 // 0 - bytec_0 // "asset_id" - app_global_get_ex - assert // check self.asset_id exists - // smart_contracts/circulating_supply/contract.py:60-61 - // # Preconditions - // assert Txn.sender == asset.manager, err.UNAUTHORIZED - txn Sender - dig 1 - asset_params_get AssetManager - assert // asset exists - == - assert // Unauthorized - // smart_contracts/circulating_supply/contract.py:62 - // assert Account(address.bytes).is_opted_in(asset), err.NOT_OPTED_IN - intc_2 // 32 - uncover 3 - == - assert // Address length is 32 bytes - uncover 2 - swap - asset_holding_get AssetBalance - bury 1 - assert // Not Opted-In - // smart_contracts/circulating_supply/contract.py:65 - // case cfg.NOT_CIRCULATING_LABEL_1: - bytec_1 // "burned" - // smart_contracts/circulating_supply/contract.py:67 - // case cfg.NOT_CIRCULATING_LABEL_2: - bytec_2 // "locked" - // smart_contracts/circulating_supply/contract.py:69 - // case cfg.NOT_CIRCULATING_LABEL_3: - bytec_3 // "generic" - // smart_contracts/circulating_supply/contract.py:63-72 - // # Effects - // match label: - // case cfg.NOT_CIRCULATING_LABEL_1: - // self.not_circulating_label_1.value = address - // case cfg.NOT_CIRCULATING_LABEL_2: - // self.not_circulating_label_2.value = address - // case cfg.NOT_CIRCULATING_LABEL_3: - // self.not_circulating_label_3.value = address - // case _: - // assert False, err.INVALID_LABEL - uncover 3 - match set_not_circulating_address_switch_case_0@2 set_not_circulating_address_switch_case_1@3 set_not_circulating_address_switch_case_2@4 - // smart_contracts/circulating_supply/contract.py:72 - // assert False, err.INVALID_LABEL - err // Invalid Label - -set_not_circulating_address_switch_case_2@4: - // smart_contracts/circulating_supply/contract.py:70 - // self.not_circulating_label_3.value = address - bytec_3 // "generic" - dig 1 - app_global_put - -set_not_circulating_address_switch_case_next@6: - // smart_contracts/circulating_supply/contract.py:50 - // @abimethod() - intc_1 // 1 - return - -set_not_circulating_address_switch_case_1@3: - // smart_contracts/circulating_supply/contract.py:68 - // self.not_circulating_label_2.value = address - bytec_2 // "locked" - dig 1 - app_global_put - b set_not_circulating_address_switch_case_next@6 - -set_not_circulating_address_switch_case_0@2: - // smart_contracts/circulating_supply/contract.py:66 - // self.not_circulating_label_1.value = address - bytec_1 // "burned" - dig 1 - app_global_put - b set_not_circulating_address_switch_case_next@6 - - -// smart_contracts.circulating_supply.contract.CirculatingSupply.arc62_get_circulating_supply[routing]() -> void: -arc62_get_circulating_supply: - pushbytes "" - dupn 2 - // smart_contracts/circulating_supply/contract.py:74 - // @abimethod(readonly=True) - txna ApplicationArgs 1 - dup - len - intc_3 // 8 - == - assert // invalid number of bytes for arc4.uint64 - btoi - dup - // smart_contracts/circulating_supply/contract.py:86 - // not_circulating_1 = Account(self.not_circulating_label_1.value.bytes) - intc_0 // 0 - bytec_1 // "burned" - app_global_get_ex - swap - dup - cover 2 - cover 3 - assert // check self.not_circulating_label_1 exists - len - intc_2 // 32 - == - assert // Address length is 32 bytes - // smart_contracts/circulating_supply/contract.py:87 - // not_circulating_2 = Account(self.not_circulating_label_2.value.bytes) - intc_0 // 0 - bytec_2 // "locked" - app_global_get_ex - swap - dup - cover 2 - cover 3 - assert // check self.not_circulating_label_2 exists - len - intc_2 // 32 - == - assert // Address length is 32 bytes - // smart_contracts/circulating_supply/contract.py:88 - // not_circulating_3 = Account(self.not_circulating_label_3.value.bytes) - intc_0 // 0 - bytec_3 // "generic" - app_global_get_ex - swap - dup - cover 2 - cover 3 - assert // check self.not_circulating_label_3 exists - len - intc_2 // 32 - == - assert // Address length is 32 bytes - // smart_contracts/circulating_supply/contract.py:89-90 - // # Preconditions - // assert asset_id == self.asset_id, err.INVALID_ASSET_ID - intc_0 // 0 - bytec_0 // "asset_id" - app_global_get_ex - assert // check self.asset_id exists - dig 1 - == - assert // Invalid ASA ID - // smart_contracts/circulating_supply/contract.py:94 - // if asset.reserve == Global.zero_address - asset_params_get AssetReserve - assert // asset exists - global ZeroAddress - == - // smart_contracts/circulating_supply/contract.py:94-95 - // if asset.reserve == Global.zero_address - // or not asset.reserve.is_opted_in(asset) - bnz arc62_get_circulating_supply_ternary_true@3 - // smart_contracts/circulating_supply/contract.py:95 - // or not asset.reserve.is_opted_in(asset) - dig 3 - dup - asset_params_get AssetReserve - assert // asset exists - swap - asset_holding_get AssetBalance - bury 1 - bnz arc62_get_circulating_supply_ternary_false@4 - -arc62_get_circulating_supply_ternary_true@3: - // smart_contracts/circulating_supply/contract.py:93 - // UInt64(0) - intc_0 // 0 - bury 5 - -arc62_get_circulating_supply_ternary_merge@5: - // smart_contracts/circulating_supply/contract.py:100 - // if not_circulating_1 == Global.zero_address - dig 2 - global ZeroAddress - == - // smart_contracts/circulating_supply/contract.py:100-101 - // if not_circulating_1 == Global.zero_address - // or not not_circulating_1.is_opted_in(asset) - bnz arc62_get_circulating_supply_ternary_true@7 - // smart_contracts/circulating_supply/contract.py:101 - // or not not_circulating_1.is_opted_in(asset) - dig 2 - dig 4 - asset_holding_get AssetBalance - bury 1 - bnz arc62_get_circulating_supply_ternary_false@8 - -arc62_get_circulating_supply_ternary_true@7: - // smart_contracts/circulating_supply/contract.py:99 - // UInt64(0) - intc_0 // 0 - bury 7 - -arc62_get_circulating_supply_ternary_merge@9: - // smart_contracts/circulating_supply/contract.py:106 - // if not_circulating_2 == Global.zero_address - dig 1 - global ZeroAddress - == - // smart_contracts/circulating_supply/contract.py:106-107 - // if not_circulating_2 == Global.zero_address - // or not not_circulating_2.is_opted_in(asset) - bnz arc62_get_circulating_supply_ternary_true@11 - // smart_contracts/circulating_supply/contract.py:107 - // or not not_circulating_2.is_opted_in(asset) - dig 1 - dig 4 - asset_holding_get AssetBalance - bury 1 - bnz arc62_get_circulating_supply_ternary_false@12 - -arc62_get_circulating_supply_ternary_true@11: - // smart_contracts/circulating_supply/contract.py:105 - // UInt64(0) - intc_0 // 0 - bury 6 - -arc62_get_circulating_supply_ternary_merge@13: - // smart_contracts/circulating_supply/contract.py:112 - // if not_circulating_3 == Global.zero_address - dup - global ZeroAddress - == - // smart_contracts/circulating_supply/contract.py:112-113 - // if not_circulating_3 == Global.zero_address - // or not not_circulating_3.is_opted_in(asset) - bnz arc62_get_circulating_supply_ternary_true@15 - // smart_contracts/circulating_supply/contract.py:113 - // or not not_circulating_3.is_opted_in(asset) - dup - dig 4 - asset_holding_get AssetBalance - bury 1 - bnz arc62_get_circulating_supply_ternary_false@16 - -arc62_get_circulating_supply_ternary_true@15: - // smart_contracts/circulating_supply/contract.py:111 - // UInt64(0) - intc_0 // 0 - -arc62_get_circulating_supply_ternary_merge@17: - // smart_contracts/circulating_supply/contract.py:117 - // asset.total - dig 4 - asset_params_get AssetTotal - assert // asset exists - // smart_contracts/circulating_supply/contract.py:117-118 - // asset.total - // - reserve_balance - dig 6 - - - // smart_contracts/circulating_supply/contract.py:117-119 - // asset.total - // - reserve_balance - // - not_circulating_balance_1 - dig 8 - - - // smart_contracts/circulating_supply/contract.py:117-120 - // asset.total - // - reserve_balance - // - not_circulating_balance_1 - // - not_circulating_balance_2 - dig 7 - - - // smart_contracts/circulating_supply/contract.py:117-121 - // asset.total - // - reserve_balance - // - not_circulating_balance_1 - // - not_circulating_balance_2 - // - not_circulating_balance_3 - swap - - - // smart_contracts/circulating_supply/contract.py:74 - // @abimethod(readonly=True) - itob - pushbytes 0x151f7c75 - swap - concat - log - intc_1 // 1 - return - -arc62_get_circulating_supply_ternary_false@16: - // smart_contracts/circulating_supply/contract.py:114 - // else asset.balance(not_circulating_3) - dup - dig 4 - asset_holding_get AssetBalance - assert // account opted into asset - b arc62_get_circulating_supply_ternary_merge@17 - -arc62_get_circulating_supply_ternary_false@12: - // smart_contracts/circulating_supply/contract.py:108 - // else asset.balance(not_circulating_2) - dig 1 - dig 4 - asset_holding_get AssetBalance - assert // account opted into asset - bury 6 - b arc62_get_circulating_supply_ternary_merge@13 - -arc62_get_circulating_supply_ternary_false@8: - // smart_contracts/circulating_supply/contract.py:102 - // else asset.balance(not_circulating_1) - dig 2 - dig 4 - asset_holding_get AssetBalance - assert // account opted into asset - bury 7 - b arc62_get_circulating_supply_ternary_merge@9 - -arc62_get_circulating_supply_ternary_false@4: - // smart_contracts/circulating_supply/contract.py:96 - // else asset.balance(asset.reserve) - dig 3 - dup - asset_params_get AssetReserve - assert // asset exists - swap - asset_holding_get AssetBalance - assert // account opted into asset - bury 5 - b arc62_get_circulating_supply_ternary_merge@5 diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc56.json b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc56.json deleted file mode 100644 index 6c074faad..000000000 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc56.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "name": "CirculatingSupply", - "structs": {}, - "methods": [ - { - "name": "set_asset", - "args": [ - { - "type": "uint64", - "name": "asset_id", - "desc": "ASA ID of the circulating supply" - } - ], - "returns": { - "type": "void" - }, - "actions": { - "create": [], - "call": [ - "NoOp" - ] - }, - "readonly": false, - "desc": "Set the ASA ID for the circulating supply - Authorization: ASA Manager Address.", - "events": [], - "recommendations": {} - }, - { - "name": "set_not_circulating_address", - "args": [ - { - "type": "address", - "name": "address", - "desc": "Address to assign to the label to" - }, - { - "type": "string", - "name": "label", - "desc": "Not-circulating label selector" - } - ], - "returns": { - "type": "void" - }, - "actions": { - "create": [], - "call": [ - "NoOp" - ] - }, - "readonly": false, - "desc": "Set non-circulating supply addresses - Authorization: ASA Manager Address.", - "events": [], - "recommendations": {} - }, - { - "name": "arc62_get_circulating_supply", - "args": [ - { - "type": "uint64", - "name": "asset_id", - "desc": "ASA ID of the circulating supply" - } - ], - "returns": { - "type": "uint64", - "desc": "ASA circulating supply" - }, - "actions": { - "create": [], - "call": [ - "NoOp" - ] - }, - "readonly": true, - "desc": "Get ASA circulating supply.", - "events": [], - "recommendations": {} - } - ], - "arcs": [ - 22, - 28 - ], - "desc": "ARC-62 Reference Implementation", - "networks": {}, - "state": { - "schema": { - "global": { - "ints": 1, - "bytes": 3 - }, - "local": { - "ints": 0, - "bytes": 0 - } - }, - "keys": { - "global": { - "asset_id": { - "keyType": "AVMString", - "valueType": "AVMUint64", - "key": "YXNzZXRfaWQ=" - }, - "not_circulating_label_1": { - "keyType": "AVMString", - "valueType": "address", - "key": "YnVybmVk" - }, - "not_circulating_label_2": { - "keyType": "AVMString", - "valueType": "address", - "key": "bG9ja2Vk" - }, - "not_circulating_label_3": { - "keyType": "AVMString", - "valueType": "address", - "key": "Z2VuZXJpYw==" - } - }, - "local": {}, - "box": {} - }, - "maps": { - "global": {}, - "local": {}, - "box": {} - } - }, - "bareActions": { - "create": [ - "NoOp" - ], - "call": [] - }, - "sourceInfo": { - "approval": { - "sourceInfo": [ - { - "pc": [ - 194, - 264, - 278, - 292 - ], - "errorMessage": "Address length is 32 bytes" - }, - { - "pc": [ - 300 - ], - "errorMessage": "Invalid ASA ID" - }, - { - "pc": [ - 216 - ], - "errorMessage": "Invalid Label" - }, - { - "pc": [ - 202 - ], - "errorMessage": "Not Opted-In" - }, - { - "pc": [ - 68 - ], - "errorMessage": "OnCompletion must be NoOp" - }, - { - "pc": [ - 108 - ], - "errorMessage": "OnCompletion must be NoOp && can only call when creating" - }, - { - "pc": [ - 139, - 189 - ], - "errorMessage": "Unauthorized" - }, - { - "pc": [ - 422, - 432, - 444, - 459 - ], - "errorMessage": "account opted into asset" - }, - { - "pc": [ - 126, - 187, - 303, - 315, - 393, - 455 - ], - "errorMessage": "asset exists" - }, - { - "pc": [ - 134, - 180, - 296 - ], - "errorMessage": "check self.asset_id exists" - }, - { - "pc": [ - 260 - ], - "errorMessage": "check self.not_circulating_label_1 exists" - }, - { - "pc": [ - 274 - ], - "errorMessage": "check self.not_circulating_label_2 exists" - }, - { - "pc": [ - 288 - ], - "errorMessage": "check self.not_circulating_label_3 exists" - }, - { - "pc": [ - 165 - ], - "errorMessage": "invalid array length header" - }, - { - "pc": [ - 173 - ], - "errorMessage": "invalid number of bytes for arc4.dynamic_array" - }, - { - "pc": [ - 159 - ], - "errorMessage": "invalid number of bytes for arc4.static_array" - }, - { - "pc": [ - 118, - 248 - ], - "errorMessage": "invalid number of bytes for arc4.uint64" - } - ], - "pcOffsetMethod": "none" - }, - "clear": { - "sourceInfo": [], - "pcOffsetMethod": "none" - } - }, - "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMzIgOAogICAgYnl0ZWNibG9jayAiYXNzZXRfaWQiICJidXJuZWQiICJsb2NrZWQiICJnZW5lcmljIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZWNfMSAvLyAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI2LTI4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjktMzEKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMzCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIGJ5dGVjXzMgLy8gImdlbmVyaWMiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzItMzQKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CgptYWluX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxMgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHg3MDliODBhOCAweDBiNjJjNzI4IDB4NWNjMmM1MzUgLy8gbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiLCBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIiwgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBzZXRfYXNzZXQgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkKICAgIGVycgoKbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxMjoKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AgJiYgY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXRbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfYXNzZXQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUA0CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VANAogICAgaW50Y18xIC8vIDEKCnNldF9hc3NldF9ib29sX21lcmdlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhc3NlcnQgLy8gVW5hdXRob3JpemVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzYKICAgIC8vIEBhYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VANDoKICAgIGludGNfMCAvLyAwCiAgICBiIHNldF9hc3NldF9ib29sX21lcmdlQDUKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwbiAyCiAgICBsZW4KICAgIGR1cAogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5CiAgICAvLyBhc3NldCA9IEFzc2V0KHNlbGYuYXNzZXRfaWQpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjYwLTYxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGRpZyAxCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgPT0KICAgIGFzc2VydCAvLyBVbmF1dGhvcml6ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjIKICAgIC8vIGFzc2VydCBBY2NvdW50KGFkZHJlc3MuYnl0ZXMpLmlzX29wdGVkX2luKGFzc2V0KSwgZXJyLk5PVF9PUFRFRF9JTgogICAgaW50Y18yIC8vIDMyCiAgICB1bmNvdmVyIDMKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBidXJ5IDEKICAgIGFzc2VydCAvLyBOb3QgT3B0ZWQtSW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjUKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xOgogICAgYnl0ZWNfMSAvLyAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2NwogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzI6CiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY5CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIGJ5dGVjXzMgLy8gImdlbmVyaWMiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjYzLTcyCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIG1hdGNoIGxhYmVsOgogICAgLy8gICAgIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xOgogICAgLy8gICAgICAgICBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgLy8gICAgICAgICBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zOgogICAgLy8gICAgICAgICBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgXzoKICAgIC8vICAgICAgICAgYXNzZXJ0IEZhbHNlLCBlcnIuSU5WQUxJRF9MQUJFTAogICAgdW5jb3ZlciAzCiAgICBtYXRjaCBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8xQDMgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzJANAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MgogICAgLy8gYXNzZXJ0IEZhbHNlLCBlcnIuSU5WQUxJRF9MQUJFTAogICAgZXJyIC8vIEludmFsaWQgTGFiZWwKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjcwCiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlID0gYWRkcmVzcwogICAgYnl0ZWNfMyAvLyAiZ2VuZXJpYyIKICAgIGRpZyAxCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzFAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjgKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIudmFsdWUgPSBhZGRyZXNzCiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIGIgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANgoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjYKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEudmFsdWUgPSBhZGRyZXNzCiAgICBieXRlY18xIC8vICJidXJuZWQiCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIGIgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICBwdXNoYnl0ZXMgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg2CiAgICAvLyBub3RfY2lyY3VsYXRpbmdfMSA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18xIC8vICJidXJuZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBjb3ZlciAzCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMSBleGlzdHMKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg3CiAgICAvLyBub3RfY2lyY3VsYXRpbmdfMiA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZS5ieXRlcykKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBjb3ZlciAzCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiBleGlzdHMKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg4CiAgICAvLyBub3RfY2lyY3VsYXRpbmdfMyA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZS5ieXRlcykKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJnZW5lcmljIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgY292ZXIgMgogICAgY292ZXIgMwogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgZXhpc3RzCiAgICBsZW4KICAgIGludGNfMiAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBBZGRyZXNzIGxlbmd0aCBpcyAzMiBieXRlcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4OS05MAogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgYXNzZXRfaWQgPT0gc2VsZi5hc3NldF9pZCwgZXJyLklOVkFMSURfQVNTRVRfSUQKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJhc3NldF9pZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIGRpZyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0LTk1CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgZGlnIDMKICAgIGR1cAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkzCiAgICAvLyBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICBidXJ5IDUKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDAKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18xID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGRpZyAyCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMC0xMDEKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18xID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBub3RfY2lyY3VsYXRpbmdfMS5pc19vcHRlZF9pbihhc3NldCkKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA3CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMQogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18xLmlzX29wdGVkX2luKGFzc2V0KQogICAgZGlnIDIKICAgIGRpZyA0CiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA2CiAgICAvLyBpZiBub3RfY2lyY3VsYXRpbmdfMiA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBkaWcgMQogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDYtMTA3CiAgICAvLyBpZiBub3RfY2lyY3VsYXRpbmdfMiA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICAvLyBvciBub3Qgbm90X2NpcmN1bGF0aW5nXzIuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA3CiAgICAvLyBvciBub3Qgbm90X2NpcmN1bGF0aW5nXzIuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBkaWcgMQogICAgZGlnIDQKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA1CiAgICAvLyBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICBidXJ5IDYKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEyCiAgICAvLyBpZiBub3RfY2lyY3VsYXRpbmdfMyA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBkdXAKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEyLTExMwogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18zLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDE1CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExMwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18zLmlzX29wdGVkX2luKGFzc2V0KQogICAgZHVwCiAgICBkaWcgNAogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBidXJ5IDEKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTYKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTEKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50Y18wIC8vIDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE3CiAgICAvLyBhc3NldC50b3RhbAogICAgZGlnIDQKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRUb3RhbAogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTE4CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIGRpZyA2CiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNy0xMTkKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8xCiAgICBkaWcgOAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIwCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICBkaWcgNwogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIxCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICAvLyAtIG5vdF9jaXJjdWxhdGluZ19iYWxhbmNlXzMKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGl0b2IKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShub3RfY2lyY3VsYXRpbmdfMykKICAgIGR1cAogICAgZGlnIDQKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTcKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA4CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2Uobm90X2NpcmN1bGF0aW5nXzIpCiAgICBkaWcgMQogICAgZGlnIDQKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgYnVyeSA2CiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMwoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKG5vdF9jaXJjdWxhdGluZ18xKQogICAgZGlnIDIKICAgIGRpZyA0CiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGJ1cnkgNwogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAOQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYXNzZXQucmVzZXJ2ZSkKICAgIGRpZyAzCiAgICBkdXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBzd2FwCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGJ1cnkgNQogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANQo=", - "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" - }, - "byteCode": { - "approval": "CyAEAAEgCCYECGFzc2V0X2lkBmJ1cm5lZAZsb2NrZWQHZ2VuZXJpYzEYQAAPKCJnKTIDZyoyA2crMgNnMRtBACQxGRREMRhEggMEcJuAqAQLYscoBFzCxTU2GgCOAwALADIAiQAxGRQxGBQQRCNDNhoBSRUlEkQXSTEATHEHRBJBAA8iKGVEQAAII0QoSwFnI0MiQv/1NhoBRwIVSSQSRDYaAkkiWYECCEsBFRJEVwIAIihlRDEASwFxB0QSRCRPAxJETwJMcABFAUQpKitPA44DAA4ABwABACtLAWcjQypLAWdC//cpSwFnQv/wgABHAjYaAUkVJRJEF0kiKWVMSU4CTgNEFSQSRCIqZUxJTgJOA0QVJBJEIitlTElOAk4DRBUkEkQiKGVESwESRHEIRDIDEkAADksDSXEIRExwAEUBQAB+IkUFSwIyAxJAAAtLAksEcABFAUAAXCJFB0sBMgMSQAALSwFLBHAARQFAADoiRQZJMgMSQAAKSUsEcABFAUAAHSJLBHEAREsGCUsICUsHCUwJFoAEFR98dUxQsCNDSUsEcABEQv/bSwFLBHAAREUGQv+9SwJLBHAAREUHQv+bSwNJcQhETHAAREUFQv92", - "clear": "C4EBQw==" - }, - "compilerInfo": { - "compiler": "puya", - "compilerVersion": { - "major": 5, - "minor": 4, - "patch": 0 - } - }, - "events": [], - "templateVariables": {} -} \ No newline at end of file diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.puya.map b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.puya.map deleted file mode 100644 index 7e7f2c0d5..000000000 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.puya.map +++ /dev/null @@ -1,25 +0,0 @@ -{ - "version": 3, - "sources": [], - "mappings": ";;;", - "op_pc_offset": 0, - "pc_events": { - "1": { - "subroutine": "algopy.arc4.ARC4Contract.clear_state_program", - "params": {}, - "block": "main", - "stack_in": [], - "op": "pushint 1 // 1", - "defined_out": [ - "1" - ], - "stack_out": [ - "1" - ] - }, - "3": { - "op": "return", - "stack_out": [] - } - } -} \ No newline at end of file diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.teal b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.teal deleted file mode 100644 index 8843a4b0d..000000000 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.teal +++ /dev/null @@ -1,7 +0,0 @@ -#pragma version 11 -#pragma typetrack false - -// algopy.arc4.ARC4Contract.clear_state_program() -> uint64: -main: - pushint 1 // 1 - return diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/circulating_supply_client.py b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/circulating_supply_client.py deleted file mode 100644 index 2a34abae0..000000000 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/circulating_supply_client.py +++ /dev/null @@ -1,952 +0,0 @@ -# flake8: noqa -# fmt: off -# mypy: ignore-errors -# This file was automatically generated by algokit-client-generator. -# DO NOT MODIFY IT BY HAND. -# requires: algokit-utils@^3.0.0 - -# common -import dataclasses -import typing -# core algosdk -import algosdk -from algosdk.transaction import OnComplete -from algosdk.atomic_transaction_composer import TransactionSigner -from algosdk.source_map import SourceMap -from algosdk.transaction import Transaction -from algosdk.v2client.models import SimulateTraceConfig -# utils -import algokit_utils -from algokit_utils import AlgorandClient as _AlgoKitAlgorandClient - -_APP_SPEC_JSON = r"""{"arcs": [22, 28], "bareActions": {"call": [], "create": ["NoOp"]}, "methods": [{"actions": {"call": ["NoOp"], "create": []}, "args": [{"type": "uint64", "desc": "ASA ID of the circulating supply", "name": "asset_id"}], "name": "set_asset", "returns": {"type": "void"}, "desc": "Set the ASA ID for the circulating supply - Authorization: ASA Manager Address.", "events": [], "readonly": false, "recommendations": {}}, {"actions": {"call": ["NoOp"], "create": []}, "args": [{"type": "address", "desc": "Address to assign to the label to", "name": "address"}, {"type": "string", "desc": "Not-circulating label selector", "name": "label"}], "name": "set_not_circulating_address", "returns": {"type": "void"}, "desc": "Set non-circulating supply addresses - Authorization: ASA Manager Address.", "events": [], "readonly": false, "recommendations": {}}, {"actions": {"call": ["NoOp"], "create": []}, "args": [{"type": "uint64", "desc": "ASA ID of the circulating supply", "name": "asset_id"}], "name": "arc62_get_circulating_supply", "returns": {"type": "uint64", "desc": "ASA circulating supply"}, "desc": "Get ASA circulating supply.", "events": [], "readonly": true, "recommendations": {}}], "name": "CirculatingSupply", "state": {"keys": {"box": {}, "global": {"asset_id": {"key": "YXNzZXRfaWQ=", "keyType": "AVMString", "valueType": "AVMUint64"}, "not_circulating_label_1": {"key": "YnVybmVk", "keyType": "AVMString", "valueType": "address"}, "not_circulating_label_2": {"key": "bG9ja2Vk", "keyType": "AVMString", "valueType": "address"}, "not_circulating_label_3": {"key": "Z2VuZXJpYw==", "keyType": "AVMString", "valueType": "address"}}, "local": {}}, "maps": {"box": {}, "global": {}, "local": {}}, "schema": {"global": {"bytes": 3, "ints": 1}, "local": {"bytes": 0, "ints": 0}}}, "structs": {}, "byteCode": {"approval": "CyAEAAEgCCYECGFzc2V0X2lkBmJ1cm5lZAZsb2NrZWQHZ2VuZXJpYzEYQAAPKCJnKTIDZyoyA2crMgNnMRtBACQxGRREMRhEggMEcJuAqAQLYscoBFzCxTU2GgCOAwALADIAiQAxGRQxGBQQRCNDNhoBSRUlEkQXSTEATHEHRBJBAA8iKGVEQAAII0QoSwFnI0MiQv/1NhoBRwIVSSQSRDYaAkkiWYECCEsBFRJEVwIAIihlRDEASwFxB0QSRCRPAxJETwJMcABFAUQpKitPA44DAA4ABwABACtLAWcjQypLAWdC//cpSwFnQv/wgABHAjYaAUkVJRJEF0kiKWVMSU4CTgNEFSQSRCIqZUxJTgJOA0QVJBJEIitlTElOAk4DRBUkEkQiKGVESwESRHEIRDIDEkAADksDSXEIRExwAEUBQAB+IkUFSwIyAxJAAAtLAksEcABFAUAAXCJFB0sBMgMSQAALSwFLBHAARQFAADoiRQZJMgMSQAAKSUsEcABFAUAAHSJLBHEAREsGCUsICUsHCUwJFoAEFR98dUxQsCNDSUsEcABEQv/bSwFLBHAAREUGQv+9SwJLBHAAREUHQv+bSwNJcQhETHAAREUFQv92", "clear": "C4EBQw=="}, "desc": "ARC-62 Reference Implementation", "events": [], "networks": {}, "source": {"approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMzIgOAogICAgYnl0ZWNibG9jayAiYXNzZXRfaWQiICJidXJuZWQiICJsb2NrZWQiICJnZW5lcmljIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZWNfMSAvLyAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI2LTI4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjktMzEKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMzCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIGJ5dGVjXzMgLy8gImdlbmVyaWMiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzItMzQKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CgptYWluX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxMgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHg3MDliODBhOCAweDBiNjJjNzI4IDB4NWNjMmM1MzUgLy8gbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiLCBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIiwgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBzZXRfYXNzZXQgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkKICAgIGVycgoKbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxMjoKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AgJiYgY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXRbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfYXNzZXQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUA0CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VANAogICAgaW50Y18xIC8vIDEKCnNldF9hc3NldF9ib29sX21lcmdlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhc3NlcnQgLy8gVW5hdXRob3JpemVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzYKICAgIC8vIEBhYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VANDoKICAgIGludGNfMCAvLyAwCiAgICBiIHNldF9hc3NldF9ib29sX21lcmdlQDUKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwbiAyCiAgICBsZW4KICAgIGR1cAogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5CiAgICAvLyBhc3NldCA9IEFzc2V0KHNlbGYuYXNzZXRfaWQpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiYXNzZXRfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjYwLTYxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGRpZyAxCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgPT0KICAgIGFzc2VydCAvLyBVbmF1dGhvcml6ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjIKICAgIC8vIGFzc2VydCBBY2NvdW50KGFkZHJlc3MuYnl0ZXMpLmlzX29wdGVkX2luKGFzc2V0KSwgZXJyLk5PVF9PUFRFRF9JTgogICAgaW50Y18yIC8vIDMyCiAgICB1bmNvdmVyIDMKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBidXJ5IDEKICAgIGFzc2VydCAvLyBOb3QgT3B0ZWQtSW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjUKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xOgogICAgYnl0ZWNfMSAvLyAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2NwogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzI6CiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY5CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIGJ5dGVjXzMgLy8gImdlbmVyaWMiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjYzLTcyCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIG1hdGNoIGxhYmVsOgogICAgLy8gICAgIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xOgogICAgLy8gICAgICAgICBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgLy8gICAgICAgICBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zOgogICAgLy8gICAgICAgICBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgXzoKICAgIC8vICAgICAgICAgYXNzZXJ0IEZhbHNlLCBlcnIuSU5WQUxJRF9MQUJFTAogICAgdW5jb3ZlciAzCiAgICBtYXRjaCBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8xQDMgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzJANAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MgogICAgLy8gYXNzZXJ0IEZhbHNlLCBlcnIuSU5WQUxJRF9MQUJFTAogICAgZXJyIC8vIEludmFsaWQgTGFiZWwKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjcwCiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlID0gYWRkcmVzcwogICAgYnl0ZWNfMyAvLyAiZ2VuZXJpYyIKICAgIGRpZyAxCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzFAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjgKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIudmFsdWUgPSBhZGRyZXNzCiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIGIgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANgoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjYKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEudmFsdWUgPSBhZGRyZXNzCiAgICBieXRlY18xIC8vICJidXJuZWQiCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIGIgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICBwdXNoYnl0ZXMgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg2CiAgICAvLyBub3RfY2lyY3VsYXRpbmdfMSA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18xIC8vICJidXJuZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBjb3ZlciAzCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMSBleGlzdHMKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg3CiAgICAvLyBub3RfY2lyY3VsYXRpbmdfMiA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZS5ieXRlcykKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJsb2NrZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBjb3ZlciAzCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiBleGlzdHMKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg4CiAgICAvLyBub3RfY2lyY3VsYXRpbmdfMyA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZS5ieXRlcykKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJnZW5lcmljIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgY292ZXIgMgogICAgY292ZXIgMwogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgZXhpc3RzCiAgICBsZW4KICAgIGludGNfMiAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBBZGRyZXNzIGxlbmd0aCBpcyAzMiBieXRlcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4OS05MAogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgYXNzZXRfaWQgPT0gc2VsZi5hc3NldF9pZCwgZXJyLklOVkFMSURfQVNTRVRfSUQKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJhc3NldF9pZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIGRpZyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0LTk1CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgZGlnIDMKICAgIGR1cAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkzCiAgICAvLyBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICBidXJ5IDUKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDAKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18xID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGRpZyAyCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMC0xMDEKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18xID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBub3RfY2lyY3VsYXRpbmdfMS5pc19vcHRlZF9pbihhc3NldCkKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA3CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMQogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18xLmlzX29wdGVkX2luKGFzc2V0KQogICAgZGlnIDIKICAgIGRpZyA0CiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA2CiAgICAvLyBpZiBub3RfY2lyY3VsYXRpbmdfMiA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBkaWcgMQogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDYtMTA3CiAgICAvLyBpZiBub3RfY2lyY3VsYXRpbmdfMiA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICAvLyBvciBub3Qgbm90X2NpcmN1bGF0aW5nXzIuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA3CiAgICAvLyBvciBub3Qgbm90X2NpcmN1bGF0aW5nXzIuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBkaWcgMQogICAgZGlnIDQKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA1CiAgICAvLyBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICBidXJ5IDYKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEyCiAgICAvLyBpZiBub3RfY2lyY3VsYXRpbmdfMyA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBkdXAKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEyLTExMwogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18zLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDE1CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExMwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18zLmlzX29wdGVkX2luKGFzc2V0KQogICAgZHVwCiAgICBkaWcgNAogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBidXJ5IDEKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTYKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTEKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50Y18wIC8vIDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE3CiAgICAvLyBhc3NldC50b3RhbAogICAgZGlnIDQKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRUb3RhbAogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTE4CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIGRpZyA2CiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNy0xMTkKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8xCiAgICBkaWcgOAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIwCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICBkaWcgNwogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIxCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICAvLyAtIG5vdF9jaXJjdWxhdGluZ19iYWxhbmNlXzMKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGl0b2IKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShub3RfY2lyY3VsYXRpbmdfMykKICAgIGR1cAogICAgZGlnIDQKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTcKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA4CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2Uobm90X2NpcmN1bGF0aW5nXzIpCiAgICBkaWcgMQogICAgZGlnIDQKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgYnVyeSA2CiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMwoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKG5vdF9jaXJjdWxhdGluZ18xKQogICAgZGlnIDIKICAgIGRpZyA0CiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGJ1cnkgNwogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAOQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYXNzZXQucmVzZXJ2ZSkKICAgIGRpZyAzCiAgICBkdXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBzd2FwCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGJ1cnkgNQogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANQo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K"}, "sourceInfo": {"approval": {"pcOffsetMethod": "none", "sourceInfo": [{"pc": [194, 264, 278, 292], "errorMessage": "Address length is 32 bytes"}, {"pc": [300], "errorMessage": "Invalid ASA ID"}, {"pc": [216], "errorMessage": "Invalid Label"}, {"pc": [202], "errorMessage": "Not Opted-In"}, {"pc": [68], "errorMessage": "OnCompletion must be NoOp"}, {"pc": [108], "errorMessage": "OnCompletion must be NoOp && can only call when creating"}, {"pc": [139, 189], "errorMessage": "Unauthorized"}, {"pc": [422, 432, 444, 459], "errorMessage": "account opted into asset"}, {"pc": [126, 187, 303, 315, 393, 455], "errorMessage": "asset exists"}, {"pc": [134, 180, 296], "errorMessage": "check self.asset_id exists"}, {"pc": [260], "errorMessage": "check self.not_circulating_label_1 exists"}, {"pc": [274], "errorMessage": "check self.not_circulating_label_2 exists"}, {"pc": [288], "errorMessage": "check self.not_circulating_label_3 exists"}, {"pc": [165], "errorMessage": "invalid array length header"}, {"pc": [173], "errorMessage": "invalid number of bytes for arc4.dynamic_array"}, {"pc": [159], "errorMessage": "invalid number of bytes for arc4.static_array"}, {"pc": [118, 248], "errorMessage": "invalid number of bytes for arc4.uint64"}]}, "clear": {"pcOffsetMethod": "none", "sourceInfo": []}}, "templateVariables": {}}""" -APP_SPEC = algokit_utils.Arc56Contract.from_json(_APP_SPEC_JSON) - -def _parse_abi_args(args: object | None = None) -> list[object] | None: - """Helper to parse ABI args into the format expected by underlying client""" - if args is None: - return None - - def convert_dataclass(value: object) -> object: - if dataclasses.is_dataclass(value): - return tuple(convert_dataclass(getattr(value, field.name)) for field in dataclasses.fields(value)) - elif isinstance(value, (list, tuple)): - return type(value)(convert_dataclass(item) for item in value) - return value - - match args: - case tuple(): - method_args = list(args) - case _ if dataclasses.is_dataclass(args): - method_args = [getattr(args, field.name) for field in dataclasses.fields(args)] - case _: - raise ValueError("Invalid 'args' type. Expected 'tuple' or 'TypedDict' for respective typed arguments.") - - return [ - convert_dataclass(arg) if not isinstance(arg, algokit_utils.AppMethodCallTransactionArgument) else arg - for arg in method_args - ] if method_args else None - -def _init_dataclass(cls: type, data: dict) -> object: - """ - Recursively instantiate a dataclass of type `cls` from `data`. - - For each field on the dataclass, if the field type is also a dataclass - and the corresponding data is a dict, instantiate that field recursively. - """ - field_values = {} - for field in dataclasses.fields(cls): - field_value = data.get(field.name) - # Check if the field expects another dataclass and the value is a dict. - if dataclasses.is_dataclass(field.type) and isinstance(field_value, dict): - field_values[field.name] = _init_dataclass(typing.cast(type, field.type), field_value) - else: - field_values[field.name] = field_value - return cls(**field_values) - -@dataclasses.dataclass(frozen=True, kw_only=True) -class SetAssetArgs: - """Dataclass for set_asset arguments""" - asset_id: int - - @property - def abi_method_signature(self) -> str: - return "set_asset(uint64)void" - -@dataclasses.dataclass(frozen=True, kw_only=True) -class SetNotCirculatingAddressArgs: - """Dataclass for set_not_circulating_address arguments""" - address: str - label: str - - @property - def abi_method_signature(self) -> str: - return "set_not_circulating_address(address,string)void" - -@dataclasses.dataclass(frozen=True, kw_only=True) -class Arc62GetCirculatingSupplyArgs: - """Dataclass for arc62_get_circulating_supply arguments""" - asset_id: int - - @property - def abi_method_signature(self) -> str: - return "arc62_get_circulating_supply(uint64)uint64" - - -class CirculatingSupplyParams: - def __init__(self, app_client: algokit_utils.AppClient): - self.app_client = app_client - - def set_asset( - self, - args: tuple[int] | SetAssetArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> algokit_utils.AppCallMethodCallParams: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - return self.app_client.params.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "set_asset(uint64)void", - "args": method_args, - })) - - def set_not_circulating_address( - self, - args: tuple[str, str] | SetNotCirculatingAddressArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> algokit_utils.AppCallMethodCallParams: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - return self.app_client.params.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "set_not_circulating_address(address,string)void", - "args": method_args, - })) - - def arc62_get_circulating_supply( - self, - args: tuple[int] | Arc62GetCirculatingSupplyArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> algokit_utils.AppCallMethodCallParams: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - return self.app_client.params.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "arc62_get_circulating_supply(uint64)uint64", - "args": method_args, - })) - - def clear_state( - self, - params: algokit_utils.AppClientBareCallParams | None = None, - - ) -> algokit_utils.AppCallParams: - return self.app_client.params.bare.clear_state( - params, - - ) - - -class CirculatingSupplyCreateTransactionParams: - def __init__(self, app_client: algokit_utils.AppClient): - self.app_client = app_client - - def set_asset( - self, - args: tuple[int] | SetAssetArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> algokit_utils.BuiltTransactions: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - return self.app_client.create_transaction.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "set_asset(uint64)void", - "args": method_args, - })) - - def set_not_circulating_address( - self, - args: tuple[str, str] | SetNotCirculatingAddressArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> algokit_utils.BuiltTransactions: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - return self.app_client.create_transaction.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "set_not_circulating_address(address,string)void", - "args": method_args, - })) - - def arc62_get_circulating_supply( - self, - args: tuple[int] | Arc62GetCirculatingSupplyArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> algokit_utils.BuiltTransactions: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - return self.app_client.create_transaction.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "arc62_get_circulating_supply(uint64)uint64", - "args": method_args, - })) - - def clear_state( - self, - params: algokit_utils.AppClientBareCallParams | None = None, - - ) -> Transaction: - return self.app_client.create_transaction.bare.clear_state( - params, - - ) - - -class CirculatingSupplySend: - def __init__(self, app_client: algokit_utils.AppClient): - self.app_client = app_client - - def set_asset( - self, - args: tuple[int] | SetAssetArgs, - params: algokit_utils.CommonAppCallParams | None = None, - send_params: algokit_utils.SendParams | None = None - ) -> algokit_utils.SendAppTransactionResult[None]: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - response = self.app_client.send.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "set_asset(uint64)void", - "args": method_args, - }), send_params=send_params) - parsed_response = response - return typing.cast(algokit_utils.SendAppTransactionResult[None], parsed_response) - - def set_not_circulating_address( - self, - args: tuple[str, str] | SetNotCirculatingAddressArgs, - params: algokit_utils.CommonAppCallParams | None = None, - send_params: algokit_utils.SendParams | None = None - ) -> algokit_utils.SendAppTransactionResult[None]: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - response = self.app_client.send.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "set_not_circulating_address(address,string)void", - "args": method_args, - }), send_params=send_params) - parsed_response = response - return typing.cast(algokit_utils.SendAppTransactionResult[None], parsed_response) - - def arc62_get_circulating_supply( - self, - args: tuple[int] | Arc62GetCirculatingSupplyArgs, - params: algokit_utils.CommonAppCallParams | None = None, - send_params: algokit_utils.SendParams | None = None - ) -> algokit_utils.SendAppTransactionResult[int]: - method_args = _parse_abi_args(args) - params = params or algokit_utils.CommonAppCallParams() - response = self.app_client.send.call(algokit_utils.AppClientMethodCallParams(**{ - **dataclasses.asdict(params), - "method": "arc62_get_circulating_supply(uint64)uint64", - "args": method_args, - }), send_params=send_params) - parsed_response = response - return typing.cast(algokit_utils.SendAppTransactionResult[int], parsed_response) - - def clear_state( - self, - params: algokit_utils.AppClientBareCallParams | None = None, - send_params: algokit_utils.SendParams | None = None - ) -> algokit_utils.SendAppTransactionResult[algokit_utils.ABIReturn]: - return self.app_client.send.bare.clear_state( - params, - send_params=send_params, - ) - - -class GlobalStateValue(typing.TypedDict): - """Shape of global_state state key values""" - asset_id: int - not_circulating_label_1: str - not_circulating_label_2: str - not_circulating_label_3: str - -class CirculatingSupplyState: - """Methods to access state for the current CirculatingSupply app""" - - def __init__(self, app_client: algokit_utils.AppClient): - self.app_client = app_client - - @property - def global_state( - self - ) -> "_GlobalState": - """Methods to access global_state for the current app""" - return _GlobalState(self.app_client) - -class _GlobalState: - def __init__(self, app_client: algokit_utils.AppClient): - self.app_client = app_client - - # Pre-generated mapping of value types to their struct classes - self._struct_classes: dict[str, typing.Type[typing.Any]] = {} - - def get_all(self) -> GlobalStateValue: - """Get all current keyed values from global_state state""" - result = self.app_client.state.global_state.get_all() - if not result: - return typing.cast(GlobalStateValue, {}) - - converted = {} - for key, value in result.items(): - key_info = self.app_client.app_spec.state.keys.global_state.get(key) - struct_class = self._struct_classes.get(key_info.value_type) if key_info else None - converted[key] = ( - _init_dataclass(struct_class, value) if struct_class and isinstance(value, dict) - else value - ) - return typing.cast(GlobalStateValue, converted) - - @property - def asset_id(self) -> int: - """Get the current value of the asset_id key in global_state state""" - value = self.app_client.state.global_state.get_value("asset_id") - if isinstance(value, dict) and "AVMUint64" in self._struct_classes: - return _init_dataclass(self._struct_classes["AVMUint64"], value) # type: ignore - return typing.cast(int, value) - - @property - def not_circulating_label_1(self) -> str: - """Get the current value of the not_circulating_label_1 key in global_state state""" - value = self.app_client.state.global_state.get_value("not_circulating_label_1") - if isinstance(value, dict) and "address" in self._struct_classes: - return _init_dataclass(self._struct_classes["address"], value) # type: ignore - return typing.cast(str, value) - - @property - def not_circulating_label_2(self) -> str: - """Get the current value of the not_circulating_label_2 key in global_state state""" - value = self.app_client.state.global_state.get_value("not_circulating_label_2") - if isinstance(value, dict) and "address" in self._struct_classes: - return _init_dataclass(self._struct_classes["address"], value) # type: ignore - return typing.cast(str, value) - - @property - def not_circulating_label_3(self) -> str: - """Get the current value of the not_circulating_label_3 key in global_state state""" - value = self.app_client.state.global_state.get_value("not_circulating_label_3") - if isinstance(value, dict) and "address" in self._struct_classes: - return _init_dataclass(self._struct_classes["address"], value) # type: ignore - return typing.cast(str, value) - -class CirculatingSupplyClient: - """Client for interacting with CirculatingSupply smart contract""" - - @typing.overload - def __init__(self, app_client: algokit_utils.AppClient) -> None: ... - - @typing.overload - def __init__( - self, - *, - algorand: _AlgoKitAlgorandClient, - app_id: int, - app_name: str | None = None, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - approval_source_map: SourceMap | None = None, - clear_source_map: SourceMap | None = None, - ) -> None: ... - - def __init__( - self, - app_client: algokit_utils.AppClient | None = None, - *, - algorand: _AlgoKitAlgorandClient | None = None, - app_id: int | None = None, - app_name: str | None = None, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - approval_source_map: SourceMap | None = None, - clear_source_map: SourceMap | None = None, - ) -> None: - if app_client: - self.app_client = app_client - elif algorand and app_id: - self.app_client = algokit_utils.AppClient( - algokit_utils.AppClientParams( - algorand=algorand, - app_spec=APP_SPEC, - app_id=app_id, - app_name=app_name, - default_sender=default_sender, - default_signer=default_signer, - approval_source_map=approval_source_map, - clear_source_map=clear_source_map, - ) - ) - else: - raise ValueError("Either app_client or algorand and app_id must be provided") - - self.params = CirculatingSupplyParams(self.app_client) - self.create_transaction = CirculatingSupplyCreateTransactionParams(self.app_client) - self.send = CirculatingSupplySend(self.app_client) - self.state = CirculatingSupplyState(self.app_client) - - @staticmethod - def from_creator_and_name( - creator_address: str, - app_name: str, - algorand: _AlgoKitAlgorandClient, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - approval_source_map: SourceMap | None = None, - clear_source_map: SourceMap | None = None, - ignore_cache: bool | None = None, - app_lookup_cache: algokit_utils.ApplicationLookup | None = None, - ) -> "CirculatingSupplyClient": - return CirculatingSupplyClient( - algokit_utils.AppClient.from_creator_and_name( - creator_address=creator_address, - app_name=app_name, - app_spec=APP_SPEC, - algorand=algorand, - default_sender=default_sender, - default_signer=default_signer, - approval_source_map=approval_source_map, - clear_source_map=clear_source_map, - ignore_cache=ignore_cache, - app_lookup_cache=app_lookup_cache, - ) - ) - - @staticmethod - def from_network( - algorand: _AlgoKitAlgorandClient, - app_name: str | None = None, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - approval_source_map: SourceMap | None = None, - clear_source_map: SourceMap | None = None, - ) -> "CirculatingSupplyClient": - return CirculatingSupplyClient( - algokit_utils.AppClient.from_network( - app_spec=APP_SPEC, - algorand=algorand, - app_name=app_name, - default_sender=default_sender, - default_signer=default_signer, - approval_source_map=approval_source_map, - clear_source_map=clear_source_map, - ) - ) - - @property - def app_id(self) -> int: - return self.app_client.app_id - - @property - def app_address(self) -> str: - return self.app_client.app_address - - @property - def app_name(self) -> str: - return self.app_client.app_name - - @property - def app_spec(self) -> algokit_utils.Arc56Contract: - return self.app_client.app_spec - - @property - def algorand(self) -> _AlgoKitAlgorandClient: - return self.app_client.algorand - - def clone( - self, - app_name: str | None = None, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - approval_source_map: SourceMap | None = None, - clear_source_map: SourceMap | None = None, - ) -> "CirculatingSupplyClient": - return CirculatingSupplyClient( - self.app_client.clone( - app_name=app_name, - default_sender=default_sender, - default_signer=default_signer, - approval_source_map=approval_source_map, - clear_source_map=clear_source_map, - ) - ) - - def new_group(self) -> "CirculatingSupplyComposer": - return CirculatingSupplyComposer(self) - - @typing.overload - def decode_return_value( - self, - method: typing.Literal["set_asset(uint64)void"], - return_value: algokit_utils.ABIReturn | None - ) -> None: ... - @typing.overload - def decode_return_value( - self, - method: typing.Literal["set_not_circulating_address(address,string)void"], - return_value: algokit_utils.ABIReturn | None - ) -> None: ... - @typing.overload - def decode_return_value( - self, - method: typing.Literal["arc62_get_circulating_supply(uint64)uint64"], - return_value: algokit_utils.ABIReturn | None - ) -> int | None: ... - @typing.overload - def decode_return_value( - self, - method: str, - return_value: algokit_utils.ABIReturn | None - ) -> algokit_utils.ABIValue | algokit_utils.ABIStruct | None: ... - - def decode_return_value( - self, - method: str, - return_value: algokit_utils.ABIReturn | None - ) -> algokit_utils.ABIValue | algokit_utils.ABIStruct | None | int: - """Decode ABI return value for the given method.""" - if return_value is None: - return None - - arc56_method = self.app_spec.get_arc56_method(method) - decoded = return_value.get_arc56_value(arc56_method, self.app_spec.structs) - - # If method returns a struct, convert the dict to appropriate dataclass - if (arc56_method and - arc56_method.returns and - arc56_method.returns.struct and - isinstance(decoded, dict)): - struct_class = globals().get(arc56_method.returns.struct) - if struct_class: - return struct_class(**typing.cast(dict, decoded)) - return decoded - - -@dataclasses.dataclass(frozen=True) -class CirculatingSupplyBareCallCreateParams(algokit_utils.AppClientBareCallCreateParams): - """Parameters for creating CirculatingSupply contract with bare calls""" - on_complete: typing.Literal[OnComplete.NoOpOC] | None = None - - def to_algokit_utils_params(self) -> algokit_utils.AppClientBareCallCreateParams: - return algokit_utils.AppClientBareCallCreateParams(**self.__dict__) - -class CirculatingSupplyFactory(algokit_utils.TypedAppFactoryProtocol[CirculatingSupplyBareCallCreateParams, None, None]): - """Factory for deploying and managing CirculatingSupplyClient smart contracts""" - - def __init__( - self, - algorand: _AlgoKitAlgorandClient, - *, - app_name: str | None = None, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - version: str | None = None, - compilation_params: algokit_utils.AppClientCompilationParams | None = None, - ): - self.app_factory = algokit_utils.AppFactory( - params=algokit_utils.AppFactoryParams( - algorand=algorand, - app_spec=APP_SPEC, - app_name=app_name, - default_sender=default_sender, - default_signer=default_signer, - version=version, - compilation_params=compilation_params, - ) - ) - self.params = CirculatingSupplyFactoryParams(self.app_factory) - self.create_transaction = CirculatingSupplyFactoryCreateTransaction(self.app_factory) - self.send = CirculatingSupplyFactorySend(self.app_factory) - - @property - def app_name(self) -> str: - return self.app_factory.app_name - - @property - def app_spec(self) -> algokit_utils.Arc56Contract: - return self.app_factory.app_spec - - @property - def algorand(self) -> _AlgoKitAlgorandClient: - return self.app_factory.algorand - - def deploy( - self, - *, - on_update: algokit_utils.OnUpdate | None = None, - on_schema_break: algokit_utils.OnSchemaBreak | None = None, - create_params: CirculatingSupplyBareCallCreateParams | None = None, - update_params: None = None, - delete_params: None = None, - existing_deployments: algokit_utils.ApplicationLookup | None = None, - ignore_cache: bool = False, - app_name: str | None = None, - compilation_params: algokit_utils.AppClientCompilationParams | None = None, - send_params: algokit_utils.SendParams | None = None, - ) -> tuple[CirculatingSupplyClient, algokit_utils.AppFactoryDeployResult]: - """Deploy the application""" - deploy_response = self.app_factory.deploy( - on_update=on_update, - on_schema_break=on_schema_break, - create_params=create_params.to_algokit_utils_params() if create_params else None, - update_params=update_params, - delete_params=delete_params, - existing_deployments=existing_deployments, - ignore_cache=ignore_cache, - app_name=app_name, - compilation_params=compilation_params, - send_params=send_params, - ) - - return CirculatingSupplyClient(deploy_response[0]), deploy_response[1] - - def get_app_client_by_creator_and_name( - self, - creator_address: str, - app_name: str, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - ignore_cache: bool | None = None, - app_lookup_cache: algokit_utils.ApplicationLookup | None = None, - approval_source_map: SourceMap | None = None, - clear_source_map: SourceMap | None = None, - ) -> CirculatingSupplyClient: - """Get an app client by creator address and name""" - return CirculatingSupplyClient( - self.app_factory.get_app_client_by_creator_and_name( - creator_address, - app_name, - default_sender, - default_signer, - ignore_cache, - app_lookup_cache, - approval_source_map, - clear_source_map, - ) - ) - - def get_app_client_by_id( - self, - app_id: int, - app_name: str | None = None, - default_sender: str | None = None, - default_signer: TransactionSigner | None = None, - approval_source_map: SourceMap | None = None, - clear_source_map: SourceMap | None = None, - ) -> CirculatingSupplyClient: - """Get an app client by app ID""" - return CirculatingSupplyClient( - self.app_factory.get_app_client_by_id( - app_id, - app_name, - default_sender, - default_signer, - approval_source_map, - clear_source_map, - ) - ) - - -class CirculatingSupplyFactoryParams: - """Parameters for creating transactions for CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - self.create = CirculatingSupplyFactoryCreateParams(app_factory) - self.update = CirculatingSupplyFactoryUpdateParams(app_factory) - self.delete = CirculatingSupplyFactoryDeleteParams(app_factory) - -class CirculatingSupplyFactoryCreateParams: - """Parameters for 'create' operations of CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - - def bare( - self, - *, - params: algokit_utils.CommonAppCallCreateParams | None = None, - compilation_params: algokit_utils.AppClientCompilationParams | None = None - ) -> algokit_utils.AppCreateParams: - """Creates an instance using a bare call""" - params = params or algokit_utils.CommonAppCallCreateParams() - return self.app_factory.params.bare.create( - algokit_utils.AppFactoryCreateParams(**dataclasses.asdict(params)), - compilation_params=compilation_params) - - def set_asset( - self, - args: tuple[int] | SetAssetArgs, - *, - params: algokit_utils.CommonAppCallCreateParams | None = None, - compilation_params: algokit_utils.AppClientCompilationParams | None = None - ) -> algokit_utils.AppCreateMethodCallParams: - """Creates a new instance using the set_asset(uint64)void ABI method""" - params = params or algokit_utils.CommonAppCallCreateParams() - return self.app_factory.params.create( - algokit_utils.AppFactoryCreateMethodCallParams( - **{ - **dataclasses.asdict(params), - "method": "set_asset(uint64)void", - "args": _parse_abi_args(args), - } - ), - compilation_params=compilation_params - ) - - def set_not_circulating_address( - self, - args: tuple[str, str] | SetNotCirculatingAddressArgs, - *, - params: algokit_utils.CommonAppCallCreateParams | None = None, - compilation_params: algokit_utils.AppClientCompilationParams | None = None - ) -> algokit_utils.AppCreateMethodCallParams: - """Creates a new instance using the set_not_circulating_address(address,string)void ABI method""" - params = params or algokit_utils.CommonAppCallCreateParams() - return self.app_factory.params.create( - algokit_utils.AppFactoryCreateMethodCallParams( - **{ - **dataclasses.asdict(params), - "method": "set_not_circulating_address(address,string)void", - "args": _parse_abi_args(args), - } - ), - compilation_params=compilation_params - ) - - def arc62_get_circulating_supply( - self, - args: tuple[int] | Arc62GetCirculatingSupplyArgs, - *, - params: algokit_utils.CommonAppCallCreateParams | None = None, - compilation_params: algokit_utils.AppClientCompilationParams | None = None - ) -> algokit_utils.AppCreateMethodCallParams: - """Creates a new instance using the arc62_get_circulating_supply(uint64)uint64 ABI method""" - params = params or algokit_utils.CommonAppCallCreateParams() - return self.app_factory.params.create( - algokit_utils.AppFactoryCreateMethodCallParams( - **{ - **dataclasses.asdict(params), - "method": "arc62_get_circulating_supply(uint64)uint64", - "args": _parse_abi_args(args), - } - ), - compilation_params=compilation_params - ) - -class CirculatingSupplyFactoryUpdateParams: - """Parameters for 'update' operations of CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - - def bare( - self, - *, - params: algokit_utils.CommonAppCallCreateParams | None = None, - - ) -> algokit_utils.AppUpdateParams: - """Updates an instance using a bare call""" - params = params or algokit_utils.CommonAppCallCreateParams() - return self.app_factory.params.bare.deploy_update( - algokit_utils.AppClientBareCallParams(**dataclasses.asdict(params)), - ) - -class CirculatingSupplyFactoryDeleteParams: - """Parameters for 'delete' operations of CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - - def bare( - self, - *, - params: algokit_utils.CommonAppCallCreateParams | None = None, - - ) -> algokit_utils.AppDeleteParams: - """Deletes an instance using a bare call""" - params = params or algokit_utils.CommonAppCallCreateParams() - return self.app_factory.params.bare.deploy_delete( - algokit_utils.AppClientBareCallParams(**dataclasses.asdict(params)), - ) - - -class CirculatingSupplyFactoryCreateTransaction: - """Create transactions for CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - self.create = CirculatingSupplyFactoryCreateTransactionCreate(app_factory) - - -class CirculatingSupplyFactoryCreateTransactionCreate: - """Create new instances of CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - - def bare( - self, - params: algokit_utils.CommonAppCallCreateParams | None = None, - ) -> Transaction: - """Creates a new instance using a bare call""" - params = params or algokit_utils.CommonAppCallCreateParams() - return self.app_factory.create_transaction.bare.create( - algokit_utils.AppFactoryCreateParams(**dataclasses.asdict(params)), - ) - - -class CirculatingSupplyFactorySend: - """Send calls to CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - self.create = CirculatingSupplyFactorySendCreate(app_factory) - - -class CirculatingSupplyFactorySendCreate: - """Send create calls to CirculatingSupply contract""" - - def __init__(self, app_factory: algokit_utils.AppFactory): - self.app_factory = app_factory - - def bare( - self, - *, - params: algokit_utils.CommonAppCallCreateParams | None = None, - send_params: algokit_utils.SendParams | None = None, - compilation_params: algokit_utils.AppClientCompilationParams | None = None, - ) -> tuple[CirculatingSupplyClient, algokit_utils.SendAppCreateTransactionResult]: - """Creates a new instance using a bare call""" - params = params or algokit_utils.CommonAppCallCreateParams() - result = self.app_factory.send.bare.create( - algokit_utils.AppFactoryCreateParams(**dataclasses.asdict(params)), - send_params=send_params, - compilation_params=compilation_params - ) - return CirculatingSupplyClient(result[0]), result[1] - - -class CirculatingSupplyComposer: - """Composer for creating transaction groups for CirculatingSupply contract calls""" - - def __init__(self, client: "CirculatingSupplyClient"): - self.client = client - self._composer = client.algorand.new_group() - self._result_mappers: list[typing.Callable[[algokit_utils.ABIReturn | None], object] | None] = [] - - def set_asset( - self, - args: tuple[int] | SetAssetArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> "CirculatingSupplyComposer": - self._composer.add_app_call_method_call( - self.client.params.set_asset( - args=args, - params=params, - ) - ) - self._result_mappers.append( - lambda v: self.client.decode_return_value( - "set_asset(uint64)void", v - ) - ) - return self - - def set_not_circulating_address( - self, - args: tuple[str, str] | SetNotCirculatingAddressArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> "CirculatingSupplyComposer": - self._composer.add_app_call_method_call( - self.client.params.set_not_circulating_address( - args=args, - params=params, - ) - ) - self._result_mappers.append( - lambda v: self.client.decode_return_value( - "set_not_circulating_address(address,string)void", v - ) - ) - return self - - def arc62_get_circulating_supply( - self, - args: tuple[int] | Arc62GetCirculatingSupplyArgs, - params: algokit_utils.CommonAppCallParams | None = None - ) -> "CirculatingSupplyComposer": - self._composer.add_app_call_method_call( - self.client.params.arc62_get_circulating_supply( - args=args, - params=params, - ) - ) - self._result_mappers.append( - lambda v: self.client.decode_return_value( - "arc62_get_circulating_supply(uint64)uint64", v - ) - ) - return self - - def clear_state( - self, - *, - args: list[bytes] | None = None, - params: algokit_utils.CommonAppCallParams | None = None, - ) -> "CirculatingSupplyComposer": - params=params or algokit_utils.CommonAppCallParams() - self._composer.add_app_call( - self.client.params.clear_state( - algokit_utils.AppClientBareCallParams( - **{ - **dataclasses.asdict(params), - "args": args - } - ) - ) - ) - return self - - def add_transaction( - self, txn: Transaction, signer: TransactionSigner | None = None - ) -> "CirculatingSupplyComposer": - self._composer.add_transaction(txn, signer) - return self - - def composer(self) -> algokit_utils.TransactionComposer: - return self._composer - - def simulate( - self, - allow_more_logs: bool | None = None, - allow_empty_signatures: bool | None = None, - allow_unnamed_resources: bool | None = None, - extra_opcode_budget: int | None = None, - exec_trace_config: SimulateTraceConfig | None = None, - simulation_round: int | None = None, - skip_signatures: bool | None = None, - ) -> algokit_utils.SendAtomicTransactionComposerResults: - return self._composer.simulate( - allow_more_logs=allow_more_logs, - allow_empty_signatures=allow_empty_signatures, - allow_unnamed_resources=allow_unnamed_resources, - extra_opcode_budget=extra_opcode_budget, - exec_trace_config=exec_trace_config, - simulation_round=simulation_round, - skip_signatures=skip_signatures, - ) - - def send( - self, - send_params: algokit_utils.SendParams | None = None - ) -> algokit_utils.SendAtomicTransactionComposerResults: - return self._composer.send(send_params) diff --git a/assets/arc-0062/smart_contracts/circulating_supply/config.py b/assets/arc-0062/smart_contracts/circulating_supply/config.py deleted file mode 100644 index eb2d916e8..000000000 --- a/assets/arc-0062/smart_contracts/circulating_supply/config.py +++ /dev/null @@ -1,11 +0,0 @@ -from typing import Final - -# Roles -NOT_CIRCULATING_LABEL_1: Final[str] = "burned" -NOT_CIRCULATING_LABEL_2: Final[str] = "locked" -NOT_CIRCULATING_LABEL_3: Final[str] = "generic" - -# ARCs -ARC3_URI: Final[str] = "ipfs://" -ARC3_SUFFIX: Final[str] = "#arc3" -ARC2_PREFIX: Final[str] = "arc62" diff --git a/assets/arc-0062/smart_contracts/circulating_supply/contract.py b/assets/arc-0062/smart_contracts/circulating_supply/contract.py deleted file mode 100644 index c58a619ad..000000000 --- a/assets/arc-0062/smart_contracts/circulating_supply/contract.py +++ /dev/null @@ -1,122 +0,0 @@ -# ruff: noqa: B011 - -from algopy import ( - Account, - ARC4Contract, - Asset, - Global, - GlobalState, - String, - Txn, - UInt64, -) -from algopy.arc4 import Address, abimethod - -import smart_contracts.errors.std_errors as err - -from . import config as cfg - - -class CirculatingSupply(ARC4Contract): - """ARC-62 Reference Implementation""" - - def __init__(self) -> None: - # Global State - self.asset_id = UInt64() - self.not_circulating_label_1 = GlobalState( - Address(), key=cfg.NOT_CIRCULATING_LABEL_1 - ) - self.not_circulating_label_2 = GlobalState( - Address(), key=cfg.NOT_CIRCULATING_LABEL_2 - ) - self.not_circulating_label_3 = GlobalState( - Address(), key=cfg.NOT_CIRCULATING_LABEL_3 - ) - - @abimethod() - def set_asset(self, asset_id: UInt64) -> None: - """ - Set the ASA ID for the circulating supply - Authorization: ASA Manager Address. - - Args: - asset_id: ASA ID of the circulating supply - """ - asset = Asset(asset_id) - # Preconditions - assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED - # Effects - self.asset_id = asset_id - - @abimethod() - def set_not_circulating_address(self, address: Address, label: String) -> None: - """ - Set non-circulating supply addresses - Authorization: ASA Manager Address. - - Args: - address: Address to assign to the label to - label: Not-circulating label selector - """ - asset = Asset(self.asset_id) - # Preconditions - assert Txn.sender == asset.manager, err.UNAUTHORIZED - assert Account(address.bytes).is_opted_in(asset), err.NOT_OPTED_IN - # Effects - match label: - case cfg.NOT_CIRCULATING_LABEL_1: - self.not_circulating_label_1.value = address - case cfg.NOT_CIRCULATING_LABEL_2: - self.not_circulating_label_2.value = address - case cfg.NOT_CIRCULATING_LABEL_3: - self.not_circulating_label_3.value = address - case _: - assert False, err.INVALID_LABEL - - @abimethod(readonly=True) - def arc62_get_circulating_supply(self, asset_id: UInt64) -> UInt64: - """ - Get ASA circulating supply. - - Args: - asset_id: ASA ID of the circulating supply - - Returns: - ASA circulating supply - """ - asset = Asset(asset_id) - not_circulating_1 = Account(self.not_circulating_label_1.value.bytes) - not_circulating_2 = Account(self.not_circulating_label_2.value.bytes) - not_circulating_3 = Account(self.not_circulating_label_3.value.bytes) - # Preconditions - assert asset_id == self.asset_id, err.INVALID_ASSET_ID - # Effects - reserve_balance = ( - UInt64(0) - if asset.reserve == Global.zero_address - or not asset.reserve.is_opted_in(asset) - else asset.balance(asset.reserve) - ) - not_circulating_balance_1 = ( - UInt64(0) - if not_circulating_1 == Global.zero_address - or not not_circulating_1.is_opted_in(asset) - else asset.balance(not_circulating_1) - ) - not_circulating_balance_2 = ( - UInt64(0) - if not_circulating_2 == Global.zero_address - or not not_circulating_2.is_opted_in(asset) - else asset.balance(not_circulating_2) - ) - not_circulating_balance_3 = ( - UInt64(0) - if not_circulating_3 == Global.zero_address - or not not_circulating_3.is_opted_in(asset) - else asset.balance(not_circulating_3) - ) - return ( - asset.total - - reserve_balance - - not_circulating_balance_1 - - not_circulating_balance_2 - - not_circulating_balance_3 - ) diff --git a/assets/arc-0062/smart_contracts/errors/__init__.py b/assets/arc-0062/smart_contracts/errors/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/assets/arc-0062/smart_contracts/errors/std_errors.py b/assets/arc-0062/smart_contracts/errors/std_errors.py deleted file mode 100644 index 9c7bbe950..000000000 --- a/assets/arc-0062/smart_contracts/errors/std_errors.py +++ /dev/null @@ -1,5 +0,0 @@ -# Errors -UNAUTHORIZED = "Unauthorized" -NOT_OPTED_IN = "Not Opted-In" -INVALID_LABEL = "Invalid Label" -INVALID_ASSET_ID = "Invalid ASA ID" diff --git a/assets/arc-0062/tests/__init__.py b/assets/arc-0062/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/assets/arc-0062/tests/conftest.py b/assets/arc-0062/tests/conftest.py deleted file mode 100644 index 55396ab06..000000000 --- a/assets/arc-0062/tests/conftest.py +++ /dev/null @@ -1,280 +0,0 @@ -from typing import Final - -import pytest -from algokit_utils import ( - AlgoAmount, - AlgorandClient, - AssetCreateParams, - AssetOptInParams, - AssetTransferParams, - CommonAppCallParams, - SigningAccount, -) -from algokit_utils.config import config - -from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( - CirculatingSupplyClient, - CirculatingSupplyFactory, - SetAssetArgs, -) -from smart_contracts.circulating_supply.config import ARC3_SUFFIX, ARC3_URI - -INITIAL_FUNDS: Final[AlgoAmount] = AlgoAmount.from_algo(100) -ASA_TOTAL: Final[int] = 1000 -RESERVE_BALANCE: Final[int] = 420 -NOT_CIRCULATING_BALANCE_1: Final[int] = 69 -NOT_CIRCULATING_BALANCE_2: Final[int] = 42 -NOT_CIRCULATING_BALANCE_3: Final[int] = 4 - - -@pytest.fixture(scope="session") -def algorand() -> AlgorandClient: - client = AlgorandClient.default_localnet() - client.set_suggested_params_cache_timeout(0) - return client - - -@pytest.fixture(scope="session") -def deployer(algorand: AlgorandClient) -> SigningAccount: - account = algorand.account.random() - algorand.account.ensure_funded_from_environment( - account_to_fund=account.address, - min_spending_balance=INITIAL_FUNDS, - ) - return account - - -@pytest.fixture(scope="function") -def circulating_supply_client( - algorand: AlgorandClient, deployer: SigningAccount -) -> CirculatingSupplyClient: - config.configure( - debug=False, - populate_app_call_resources=True, - # trace_all=True, - ) - - factory = algorand.client.get_typed_app_factory( - CirculatingSupplyFactory, - default_sender=deployer.address, - default_signer=deployer.signer, - ) - client, _ = factory.send.create.bare() - algorand.account.ensure_funded_from_environment( - account_to_fund=client.app_address, - min_spending_balance=INITIAL_FUNDS, - ) - return client - - -@pytest.fixture(scope="session") -def asset_creator(algorand: AlgorandClient) -> SigningAccount: - account = algorand.account.random() - algorand.account.ensure_funded_from_environment( - account_to_fund=account.address, - min_spending_balance=INITIAL_FUNDS, - ) - return account - - -@pytest.fixture(scope="session") -def asset_manager(algorand: AlgorandClient) -> SigningAccount: - account = algorand.account.random() - algorand.account.ensure_funded_from_environment( - account_to_fund=account.address, - min_spending_balance=INITIAL_FUNDS, - ) - return account - - -@pytest.fixture(scope="session") -def asset_reserve(algorand: AlgorandClient) -> SigningAccount: - account = algorand.account.random() - algorand.account.ensure_funded_from_environment( - account_to_fund=account.address, - min_spending_balance=INITIAL_FUNDS, - ) - return account - - -@pytest.fixture(scope="session") -def not_circulating_address_1(algorand: AlgorandClient) -> SigningAccount: - account = algorand.account.random() - algorand.account.ensure_funded_from_environment( - account_to_fund=account.address, - min_spending_balance=INITIAL_FUNDS, - ) - return account - - -@pytest.fixture(scope="session") -def not_circulating_address_2(algorand: AlgorandClient) -> SigningAccount: - account = algorand.account.random() - algorand.account.ensure_funded_from_environment( - account_to_fund=account.address, - min_spending_balance=INITIAL_FUNDS, - ) - return account - - -@pytest.fixture(scope="session") -def not_circulating_address_3(algorand: AlgorandClient) -> SigningAccount: - account = algorand.account.random() - algorand.account.ensure_funded_from_environment( - account_to_fund=account.address, - min_spending_balance=INITIAL_FUNDS, - ) - return account - - -@pytest.fixture(scope="function") -def asset( - algorand: AlgorandClient, - asset_creator: SigningAccount, - asset_manager: SigningAccount, - asset_reserve: SigningAccount, - circulating_supply_client: CirculatingSupplyClient, -) -> int: - return algorand.send.asset_create( - AssetCreateParams( - sender=asset_creator.address, - signer=asset_creator.signer, - total=ASA_TOTAL, - manager=asset_manager.address, - reserve=asset_reserve.address, - url=ARC3_URI + "" + ARC3_SUFFIX, - ) - ).asset_id - - -@pytest.fixture(scope="function") -def reserve_with_balance( - algorand: AlgorandClient, - asset_creator: SigningAccount, - asset_reserve: SigningAccount, - asset: int, -) -> SigningAccount: - algorand.send.asset_opt_in( - AssetOptInParams( - sender=asset_reserve.address, - signer=asset_reserve.signer, - asset_id=asset, - ) - ) - algorand.send.asset_transfer( - AssetTransferParams( - sender=asset_creator.address, - signer=asset_creator.signer, - asset_id=asset, - amount=RESERVE_BALANCE, - receiver=asset_reserve.address, - ) - ) - assert ( - algorand.asset.get_account_information(asset_reserve, asset).balance - == RESERVE_BALANCE - ) - return asset_reserve - - -@pytest.fixture(scope="function") -def not_circulating_balance_1( - algorand: AlgorandClient, - asset_creator: SigningAccount, - not_circulating_address_1: SigningAccount, - asset: int, -) -> SigningAccount: - algorand.send.asset_opt_in( - AssetOptInParams( - sender=not_circulating_address_1.address, - signer=not_circulating_address_1.signer, - asset_id=asset, - ) - ) - algorand.send.asset_transfer( - AssetTransferParams( - sender=asset_creator.address, - signer=asset_creator.signer, - asset_id=asset, - amount=NOT_CIRCULATING_BALANCE_1, - receiver=not_circulating_address_1.address, - ) - ) - assert ( - algorand.asset.get_account_information(not_circulating_address_1, asset).balance - == NOT_CIRCULATING_BALANCE_1 - ) - return not_circulating_address_1 - - -@pytest.fixture(scope="function") -def not_circulating_balance_2( - algorand: AlgorandClient, - asset_creator: SigningAccount, - not_circulating_address_2: SigningAccount, - asset: int, -) -> SigningAccount: - algorand.send.asset_opt_in( - AssetOptInParams( - sender=not_circulating_address_2.address, - signer=not_circulating_address_2.signer, - asset_id=asset, - ) - ) - algorand.send.asset_transfer( - AssetTransferParams( - sender=asset_creator.address, - signer=asset_creator.signer, - asset_id=asset, - amount=NOT_CIRCULATING_BALANCE_2, - receiver=not_circulating_address_2.address, - ) - ) - assert ( - algorand.asset.get_account_information(not_circulating_address_2, asset).balance - == NOT_CIRCULATING_BALANCE_2 - ) - return not_circulating_address_2 - - -@pytest.fixture(scope="function") -def not_circulating_balance_3( - algorand: AlgorandClient, - asset_creator: SigningAccount, - not_circulating_address_3: SigningAccount, - asset: int, -) -> SigningAccount: - algorand.send.asset_opt_in( - AssetOptInParams( - sender=not_circulating_address_3.address, - signer=not_circulating_address_3.signer, - asset_id=asset, - ) - ) - algorand.send.asset_transfer( - AssetTransferParams( - sender=asset_creator.address, - signer=asset_creator.signer, - asset_id=asset, - amount=NOT_CIRCULATING_BALANCE_3, - receiver=not_circulating_address_3.address, - ) - ) - assert ( - algorand.asset.get_account_information(not_circulating_address_3, asset).balance - == NOT_CIRCULATING_BALANCE_3 - ) - return not_circulating_address_3 - - -@pytest.fixture(scope="function") -def asset_circulating_supply_client( - circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, -) -> CirculatingSupplyClient: - circulating_supply_client.send.set_asset( - args=SetAssetArgs(asset_id=asset), - params=CommonAppCallParams(sender=asset_manager.address), - ) - return circulating_supply_client diff --git a/assets/arc-0062/tests/test_deploy.py b/assets/arc-0062/tests/test_deploy.py deleted file mode 100644 index 017024d37..000000000 --- a/assets/arc-0062/tests/test_deploy.py +++ /dev/null @@ -1,14 +0,0 @@ -from algosdk.constants import ZERO_ADDRESS - -from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( - CirculatingSupplyClient, -) - - -def test_pass_create(circulating_supply_client: CirculatingSupplyClient) -> None: - state = circulating_supply_client.state.global_state - - assert state.asset_id == 0 - assert state.not_circulating_label_1 == ZERO_ADDRESS - assert state.not_circulating_label_2 == ZERO_ADDRESS - assert state.not_circulating_label_3 == ZERO_ADDRESS diff --git a/assets/arc-0062/tests/test_get_circulating_supply.py b/assets/arc-0062/tests/test_get_circulating_supply.py deleted file mode 100644 index d36e12220..000000000 --- a/assets/arc-0062/tests/test_get_circulating_supply.py +++ /dev/null @@ -1,171 +0,0 @@ -from algokit_utils import ( - AlgorandClient, - AssetConfigParams, - AssetTransferParams, - CommonAppCallParams, - SigningAccount, -) - -from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( - Arc62GetCirculatingSupplyArgs, - CirculatingSupplyClient, - SetNotCirculatingAddressArgs, -) -from smart_contracts.circulating_supply import config as cfg - - -def test_pass_get_circulating_supply( - algorand: AlgorandClient, - asset_circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, - reserve_with_balance: SigningAccount, - not_circulating_balance_1: SigningAccount, - not_circulating_balance_2: SigningAccount, - not_circulating_balance_3: SigningAccount, -) -> None: - total = algorand.asset.get_by_id(asset).total - reserve_balance = algorand.asset.get_account_information( - reserve_with_balance, asset - ).balance - nc_balance_1 = algorand.asset.get_account_information( - not_circulating_balance_1, asset - ).balance - nc_balance_2 = algorand.asset.get_account_information( - not_circulating_balance_2, asset - ).balance - nc_balance_3 = algorand.asset.get_account_information( - not_circulating_balance_3, asset - ).balance - - print("\nASA Total: ", total) - print("Reserve Balance: ", reserve_balance) - print(f"{cfg.NOT_CIRCULATING_LABEL_1.capitalize()} Balance: ", nc_balance_1) - print(f"{cfg.NOT_CIRCULATING_LABEL_2.capitalize()} Balance: ", nc_balance_2) - print(f"{cfg.NOT_CIRCULATING_LABEL_3.capitalize()} Balance: ", nc_balance_3) - - circulating_supply = ( - asset_circulating_supply_client.send.arc62_get_circulating_supply( - args=Arc62GetCirculatingSupplyArgs(asset_id=asset) - ).abi_return - ) - assert circulating_supply == total - reserve_balance - - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_1.address, - label=cfg.NOT_CIRCULATING_LABEL_1, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - circulating_supply = ( - asset_circulating_supply_client.send.arc62_get_circulating_supply( - args=Arc62GetCirculatingSupplyArgs(asset_id=asset), - ).abi_return - ) - assert circulating_supply == total - reserve_balance - nc_balance_1 - - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_2.address, - label=cfg.NOT_CIRCULATING_LABEL_2, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - circulating_supply = ( - asset_circulating_supply_client.send.arc62_get_circulating_supply( - args=Arc62GetCirculatingSupplyArgs(asset_id=asset), - ).abi_return - ) - assert circulating_supply == total - reserve_balance - nc_balance_1 - nc_balance_2 - - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_3.address, - label=cfg.NOT_CIRCULATING_LABEL_3, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - circulating_supply = ( - asset_circulating_supply_client.send.arc62_get_circulating_supply( - args=Arc62GetCirculatingSupplyArgs(asset_id=asset), - ).abi_return - ) - assert ( - circulating_supply - == total - reserve_balance - nc_balance_1 - nc_balance_2 - nc_balance_3 - ) - print("Circulating Supply: ", circulating_supply) - - -def test_pass_no_reserve( - algorand: AlgorandClient, - asset_circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, -) -> None: - total = algorand.asset.get_by_id(asset).total - algorand.send.asset_config( - AssetConfigParams( - sender=asset_manager.address, - signer=asset_manager.signer, - asset_id=asset, - manager=asset_manager.address, - reserve="", - ), - ) - circulating_supply = ( - asset_circulating_supply_client.send.arc62_get_circulating_supply( - args=Arc62GetCirculatingSupplyArgs(asset_id=asset), - ).abi_return - ) - assert circulating_supply == total - - -def test_pass_closed_address( - algorand: AlgorandClient, - asset_circulating_supply_client: CirculatingSupplyClient, - asset_creator: SigningAccount, - asset_manager: SigningAccount, - reserve_with_balance: SigningAccount, - not_circulating_balance_1: SigningAccount, - asset: int, -) -> None: - total = algorand.asset.get_by_id(asset).total - - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_1.address, - label=cfg.NOT_CIRCULATING_LABEL_1, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - - algorand.send.asset_transfer( - AssetTransferParams( - sender=not_circulating_balance_1.address, - signer=not_circulating_balance_1.signer, - asset_id=asset, - amount=0, - receiver=asset_creator.address, - close_asset_to=asset_creator.address, - ), - ) - - algorand.send.asset_transfer( - AssetTransferParams( - sender=reserve_with_balance.address, - signer=reserve_with_balance.signer, - asset_id=asset, - amount=0, - receiver=asset_creator.address, - close_asset_to=asset_creator.address, - ), - ) - - circulating_supply = ( - asset_circulating_supply_client.send.arc62_get_circulating_supply( - args=Arc62GetCirculatingSupplyArgs(asset_id=asset), - ).abi_return - ) - assert circulating_supply == total diff --git a/assets/arc-0062/tests/test_set_asset.py b/assets/arc-0062/tests/test_set_asset.py deleted file mode 100644 index c957a642e..000000000 --- a/assets/arc-0062/tests/test_set_asset.py +++ /dev/null @@ -1,40 +0,0 @@ -import pytest -from algokit_utils import CommonAppCallParams, LogicError, SigningAccount - -from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( - CirculatingSupplyClient, - SetAssetArgs, -) -from smart_contracts.errors import std_errors as err - - -def test_pass_set_asset( - asset_circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, -) -> None: - assert asset == asset_circulating_supply_client.state.global_state.asset_id - - -def test_fail_unauthorized_manager( - circulating_supply_client: CirculatingSupplyClient, - asset_creator: SigningAccount, - asset: int, -) -> None: - with pytest.raises(LogicError, match=err.UNAUTHORIZED): - circulating_supply_client.send.set_asset( - args=SetAssetArgs(asset_id=asset), - params=CommonAppCallParams(sender=asset_creator.address), - ) - - -def test_fail_unauthorized_already_set( - asset_circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, -) -> None: - with pytest.raises(LogicError, match=err.UNAUTHORIZED): - asset_circulating_supply_client.send.set_asset( - args=SetAssetArgs(asset_id=asset), - params=CommonAppCallParams(sender=asset_manager.address), - ) diff --git a/assets/arc-0062/tests/test_set_not_circulating_address.py b/assets/arc-0062/tests/test_set_not_circulating_address.py deleted file mode 100644 index b98359a2c..000000000 --- a/assets/arc-0062/tests/test_set_not_circulating_address.py +++ /dev/null @@ -1,95 +0,0 @@ -import pytest -from algokit_utils import CommonAppCallParams, LogicError, SigningAccount - -from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( - CirculatingSupplyClient, - SetNotCirculatingAddressArgs, -) -from smart_contracts.circulating_supply import config as cfg -from smart_contracts.errors import std_errors as err - - -def test_pass_set_not_circulating_address( - asset_circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, - not_circulating_balance_1: SigningAccount, - not_circulating_balance_2: SigningAccount, - not_circulating_balance_3: SigningAccount, -) -> None: - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_1.address, - label=cfg.NOT_CIRCULATING_LABEL_1, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_2.address, - label=cfg.NOT_CIRCULATING_LABEL_2, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_3.address, - label=cfg.NOT_CIRCULATING_LABEL_3, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - - state = asset_circulating_supply_client.state.global_state - - assert state.not_circulating_label_1 == not_circulating_balance_1.address - assert state.not_circulating_label_2 == not_circulating_balance_2.address - assert state.not_circulating_label_3 == not_circulating_balance_3.address - - -def test_fail_unauthorized( - asset_circulating_supply_client: CirculatingSupplyClient, - asset_creator: SigningAccount, - asset: int, - not_circulating_balance_1: SigningAccount, -) -> None: - with pytest.raises(LogicError, match=err.UNAUTHORIZED): - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_1.address, - label=cfg.NOT_CIRCULATING_LABEL_1, - ), - params=CommonAppCallParams(sender=asset_creator.address), - ) - - -def test_fail_not_opted_in( - asset_circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, -) -> None: - with pytest.raises(LogicError, match=err.NOT_OPTED_IN): - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=asset_manager.address, - label=cfg.NOT_CIRCULATING_LABEL_1, - ), - params=CommonAppCallParams(sender=asset_manager.address), - ) - - -def test_fail_invalid_label( - asset_circulating_supply_client: CirculatingSupplyClient, - asset_manager: SigningAccount, - asset: int, - not_circulating_balance_1: SigningAccount, -) -> None: - with pytest.raises(LogicError, match=err.INVALID_LABEL): - asset_circulating_supply_client.send.set_not_circulating_address( - args=SetNotCirculatingAddressArgs( - address=not_circulating_balance_1.address, - label=cfg.NOT_CIRCULATING_LABEL_1 + "spam", - ), - params=CommonAppCallParams(sender=asset_manager.address), - )