From e29bdfc08b3fccde42ed1957c59779f52f425cd7 Mon Sep 17 00:00:00 2001 From: cusma Date: Tue, 16 Jul 2024 17:14:07 +0200 Subject: [PATCH 01/60] doc: add arc62 --- ARCs/arc-0062.md | 265 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 ARCs/arc-0062.md diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md new file mode 100644 index 000000000..2c1cac60f --- /dev/null +++ b/ARCs/arc-0062.md @@ -0,0 +1,265 @@ +--- +arc: 62 +title: ASA circulating supply +description: An ARC to standardize a getter method for ASA circulating supply +author: Cosimo Bassi (@cusma) +discussion-to: TBD +status: Draft +type: Standards Track +category: Interface +created: 2024-06-12 +requires: 4, 22 + +--- + +## 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. + +## Motivation + +Algorand Standard Asset (ASA) `total` supply is _defined_ upon ASA creation. + +Creating an ASA on the ledger _does not_ imply its `total` supply is immediately +“minted” or “circulating”. In fact, the semantic of token “minting” on Algorand is +slightly different from other blockchains: it is not coincident with the token units +creation on the ledger. + +The Reserve Address, one of the 4 addresses of ASA Role-Based-Access-Control (RBAC), +is conventionally used to identify the portion of `total` supply not yet in circulation. +The Reserve Address has no “privilege” over the token: it is just a “logical” label +used (client-side) to classify an existing amount of ASA as “not in circulation”. + +According to this convention, “minting” an amount of ASA units is equivalent to +_moving that amount out of the Reserve Address_. + +> ASA may have the Reserve Address assigned to a Smart Contract to enforce specific +> “minting” policies, if needed. + +This convention led to a simple and unsophisticated semantic of ASA circulating +supply, widely adopted by clients (wallets, explorers, etc.) to provide standard +information: + +```text +circulating_supply = total - reserve_balance +``` + +Where `reserve_balance` is the ASA balance hold by the Reserve Address. + +However, the simplicity of such convention, who fostered adoption across the Algorand +ecosystem, poses some limitations. Complex and sophisticated use-cases of ASA, such +as regulated stable-coins and tokenized securities among others, require more +detailed and expressive definitions of circulating supply. + +As an example, an ASA could have “burned”, “locked” or “pre-minted” amounts of token, +not held in the Reserve Address, which _should not_ be considered as “circulating” +supply. This is not possible with the basic ASA protocol convention. + +This ARC proposes a standard ABI _read-only_ method (getter) to provide the circulating +supply of an ASA. + +## Specification + +The keywords "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", +"**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" +in this document are to be interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119). + +> Notes like this are non-normative. + +### ABI Method + +A compliant ASA, whose circulating supply definition conforms to this ARC, **MUST** +implement the following method on an Application (referred as _Circulating Supply App_ +in this specification): + +```json +{ + "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" + }, + "desc": "Get ASA circulating supply" +} +``` + +The `arc62_get_circulating_supply` **MUST** be a _read-only_ ([ARC-0022](https://arc.algorand.foundation/ARCs/arc-0022)) +method (getter). + +### Usage + +Getter calls **SHOULD** be _simulated_. + +External resources used by the implementation (if any) **SHOULD** be discovered +and autopopulated by the simulated method call. + +#### Example 1 + +> Let the ASA have `total` supply and a Reserve Address (i.e. not set to `ZeroAddress`). +> +> Let the Reserve Address be assigned to an account different from the Circulating +> Supply App Account. +> +> Let `burned` be an external Burned Address dedicated to ASA burned supply. +> +> Let `locked` be an external Locked Address dedicated to ASA locked supply. +> +> The ASA issuer defines the _circulating supply_ as: +> +> ```text +> circulating_supply = total - reserve_balance - burned_balance - locked_balance +> ``` +> +> In this case the simulated read-only method call would autopopulate 1 external +> reference for the ASA and 3 external reference accounts (Reserve, Burned and Locked). + +#### Example 2 + +> Let the ASA have `total` supply and _no_ Reserve Address (i.e. set to `ZeroAddress`). +> +> Let `non_circulating_amount` be a UInt64 Global Var defined by the implementation +> of the Circulating Supply App. +> +> The ASA issuer defines the _circulating supply_ as: +> +> ```text +> circulating_supply = total - non_circulating_amount +> ``` +> +> In this case the simulated read-only method call would autopopulate just 1 external +> reference for the ASA. + +### Circulating Supply Application discovery + +> Given an ASA ID, clients (wallet, explorer, etc.) need to discover the related +> Circulating Supply App. + +An ASA conforming to this ARC **MUST** specify the Circulating Supply App ID. + +> To avoid ecosystem fragmentation this ARC does not propose any new method to specify +> 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](https://arc.algorand.foundation/ARCs/arc-0003), +[ARC-19](https://arc.algorand.foundation/ARCs/arc-0019), [ARC-69](https://arc.algorand.foundation/ARCs/arc-0069)), +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`. + +#### Example + +```json +{ + //... + "properties": { + //... + "arc-62": { + "application-id": 123 + } + } + //... +} +``` + +## Rationale + +The definition of _circulating supply_ for sophisticated use-cases is usually ASA-specific. +It could involve, for example, complex math or external accounts’ balances, variables +stored in boxes or in global state, etc.. + +For this reason, the proposed method’s signature does not require any reference +to external resources, a part form the `asset_id` of the ASA for which the circulating +supply is defined. + +Eventual external resources can be discovered and autopopulated directly by the +simulated method call. + +The rational of this design choice is avoiding fragmentation and integration overhead +for clients (wallets, explorers, etc.). + +Clients just need to know: + +1. The ASA ID; +1. The Circulating Supply App ID implementing the `arc62_get_circulating_supply` +method for that ASA. + +## Backwards Compatibility + +Existing ASA willing to conform to this ARC **SHOULD** specify the Circulating Supply +App ID as [ARC-2](https://arc.algorand.foundation/ARCs/arc-0002) `AssetConfig` transaction +note field, as follows: + +- The `` **MUST** be equal to `arc62`; +- The **RECOMMENDED** `` are [MsgPack](https://msgpack.org/) (`m`) or [JSON](https://www.json.org/json-en.html) +(`j`); +- The `` **MUST** specify `application-id` equal to the Circulating Supply App +ID. + +**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 + +```text +arc62:j{"application-id":123} +``` + +## Reference Implementation + +> This section is non-normative. + +This section suggests a reference implementation of the Circulating Supply App. + +An ASA using the reference implementation **SHOULD NOT** assign the Reserve Address +to the Circulating Supply App Account. + +A reference implementation **SHOULD** declare, at least, the following Global State +variables: + +- `asset_id` as UInt64, initialized to `0` and set _once_ by the ASA Manager Address; +- `burned` address as Bytes, initialized to the Global `Zero Address` and set by +the ASA Manager Address; +- `locked` address as Bytes, initialized to the Global `Zero Address` and set by +the ASA Manager Address; +- `generic` address as Bytes, initialized to the Global `Zero Address` and set by +the ASA Manager Address. + +A reference implementation **SHOULD** enforce that the `asset_id` Global Variable +is equal to the `asset_id` argument of the `arc62_get_circulating_supply` method. + +> Alternatively the reference implementation could ignore the `asset_id` argument +> and use directly the `asset_id` Global Variable. + +A reference implementation **SHOULD** define the ASA _circulating supply_ as: + +```text +circulating_supply = total - reserve_balance - burned_balance - locked_balance - generic_balance +``` + +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`; +- `burned_balance` is the ASA balance hold by the Burned Address or `0` if the address +is set to the Global `ZeroAddress`; +- `locked_balance` is the ASA balance hold by the Locked Address or `0` if the address +is set to the Global `ZeroAddress`; +- `generic_balance` is the ASA balance hold by a Generic Address or `0` if the address +is set to the Global `ZeroAddress`. + +## Security Considerations + +> Not Applicable + +## Copyright + +Copyright and related rights waived via [CCO](https://creativecommons.org/publicdomain/zero/1.0/). From 240b6c1d370d064514726bffae7ad4a46fe92b6a Mon Sep 17 00:00:00 2001 From: cusma Date: Tue, 16 Jul 2024 17:14:58 +0200 Subject: [PATCH 02/60] doc: markdown lint --- ARCs/arc-0062.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 2c1cac60f..0535c24b3 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -71,8 +71,8 @@ in this document are to be interpreted as described in [RFC 2119](https://datatr ### ABI Method A compliant ASA, whose circulating supply definition conforms to this ARC, **MUST** -implement the following method on an Application (referred as _Circulating Supply App_ -in this specification): +implement the following method on an Application (referred as _Circulating Supply +App_ in this specification): ```json { @@ -197,10 +197,10 @@ App ID as [ARC-2](https://arc.algorand.foundation/ARCs/arc-0002) `AssetConfig` t note field, as follows: - The `` **MUST** be equal to `arc62`; -- The **RECOMMENDED** `` are [MsgPack](https://msgpack.org/) (`m`) or [JSON](https://www.json.org/json-en.html) -(`j`); -- The `` **MUST** specify `application-id` equal to the Circulating Supply App -ID. +- The **RECOMMENDED** `` are [MsgPack](https://msgpack.org/) (`m`) +or [JSON](https://www.json.org/json-en.html) (`j`); +- The `` **MUST** specify `application-id` equal to the Circulating Supply +App ID. **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`. From 4b5ac182dfd7d334462f99b07607cd53c8224cce Mon Sep 17 00:00:00 2001 From: cusma Date: Tue, 16 Jul 2024 17:26:10 +0200 Subject: [PATCH 03/60] doc: add reference implementation link --- ARCs/arc-0062.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 0535c24b3..f91a2fa7c 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -216,7 +216,8 @@ arc62:j{"application-id":123} > This section is non-normative. -This section suggests a reference implementation of the Circulating Supply App. +This section suggests a reference implementation of the Circulating Supply App, +published [here](../assets/arc-0062). An ASA using the reference implementation **SHOULD NOT** assign the Reserve Address to the Circulating Supply App Account. From 1bae5b048173ffb3b18a2d522e3744151110dcd2 Mon Sep 17 00:00:00 2001 From: cusma Date: Tue, 16 Jul 2024 17:26:34 +0200 Subject: [PATCH 04/60] feat: add reference implementation assets --- assets/arc-0062/.algokit.toml | 53 + .../generators/create_contract/copier.yaml | 10 + .../{{ contract_name }}/contract.py.j2 | 9 + .../{{ contract_name }}/deploy_config.py.j2 | 35 + .../generators/create_env_file/copier.yaml | 49 + ... %}.env.{{custom_network_name}}{% endif %} | 7 + ... if is_localnet %}.env.localnet{% endif %} | 7 + ...{% if is_mainnet %}.env.mainnet{% endif %} | 3 + ...{% if is_testnet %}.env.testnet{% endif %} | 3 + assets/arc-0062/.editorconfig | 10 + assets/arc-0062/.gitattributes | 1 + assets/arc-0062/.gitignore | 180 ++ assets/arc-0062/.pre-commit-config.yaml | 76 + assets/arc-0062/LICENSE | 121 + assets/arc-0062/README.md | 16 + assets/arc-0062/poetry.lock | 2055 +++++++++++++++++ assets/arc-0062/poetry.toml | 2 + assets/arc-0062/pyproject.toml | 64 + assets/arc-0062/smart_contracts/__init__.py | 0 assets/arc-0062/smart_contracts/__main__.py | 64 + .../smart_contracts/_helpers/__init__.py | 0 .../smart_contracts/_helpers/build.py | 74 + .../smart_contracts/_helpers/config.py | 61 + .../smart_contracts/_helpers/deploy.py | 53 + .../CirculatingSupply.approval.teal | 473 ++++ .../CirculatingSupply.arc32.json | 119 + .../CirculatingSupply.clear.teal | 7 + .../circulating_supply_client.py | 731 ++++++ .../circulating_supply/config.py | 6 + .../circulating_supply/contract.py | 97 + .../circulating_supply/deploy_config.py | 30 + .../smart_contracts/errors/__init__.py | 0 .../smart_contracts/errors/std_errors.py | 10 + assets/arc-0062/tests/__init__.py | 0 assets/arc-0062/tests/conftest.py | 329 +++ assets/arc-0062/tests/test_deploy.py | 15 + .../tests/test_get_circulating_supply.py | 153 ++ assets/arc-0062/tests/test_set_asset.py | 33 + .../tests/test_set_not_circulating_address.py | 123 + 39 files changed, 5079 insertions(+) create mode 100644 assets/arc-0062/.algokit.toml create mode 100644 assets/arc-0062/.algokit/generators/create_contract/copier.yaml create mode 100644 assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 create mode 100644 assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 create mode 100644 assets/arc-0062/.algokit/generators/create_env_file/copier.yaml create mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} create mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} create mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} create mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} create mode 100644 assets/arc-0062/.editorconfig create mode 100644 assets/arc-0062/.gitattributes create mode 100644 assets/arc-0062/.gitignore create mode 100644 assets/arc-0062/.pre-commit-config.yaml create mode 100644 assets/arc-0062/LICENSE create mode 100644 assets/arc-0062/README.md create mode 100644 assets/arc-0062/poetry.lock create mode 100644 assets/arc-0062/poetry.toml create mode 100644 assets/arc-0062/pyproject.toml create mode 100644 assets/arc-0062/smart_contracts/__init__.py create mode 100644 assets/arc-0062/smart_contracts/__main__.py create mode 100644 assets/arc-0062/smart_contracts/_helpers/__init__.py create mode 100644 assets/arc-0062/smart_contracts/_helpers/build.py create mode 100644 assets/arc-0062/smart_contracts/_helpers/config.py create mode 100644 assets/arc-0062/smart_contracts/_helpers/deploy.py create mode 100644 assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal create mode 100644 assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json create mode 100644 assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.teal create mode 100644 assets/arc-0062/smart_contracts/artifacts/circulating_supply/circulating_supply_client.py create mode 100644 assets/arc-0062/smart_contracts/circulating_supply/config.py create mode 100644 assets/arc-0062/smart_contracts/circulating_supply/contract.py create mode 100644 assets/arc-0062/smart_contracts/circulating_supply/deploy_config.py create mode 100644 assets/arc-0062/smart_contracts/errors/__init__.py create mode 100644 assets/arc-0062/smart_contracts/errors/std_errors.py create mode 100644 assets/arc-0062/tests/__init__.py create mode 100644 assets/arc-0062/tests/conftest.py create mode 100644 assets/arc-0062/tests/test_deploy.py create mode 100644 assets/arc-0062/tests/test_get_circulating_supply.py create mode 100644 assets/arc-0062/tests/test_set_asset.py create mode 100644 assets/arc-0062/tests/test_set_not_circulating_address.py diff --git a/assets/arc-0062/.algokit.toml b/assets/arc-0062/.algokit.toml new file mode 100644 index 000000000..9159a3659 --- /dev/null +++ b/assets/arc-0062/.algokit.toml @@ -0,0 +1,53 @@ +[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 export --without=dev -o requirements.txt', + 'poetry run pip-audit -r requirements.txt', +], 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/.algokit/generators/create_contract/copier.yaml b/assets/arc-0062/.algokit/generators/create_contract/copier.yaml new file mode 100644 index 000000000..73805de04 --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_contract/copier.yaml @@ -0,0 +1,10 @@ +_tasks: + - "echo '==== Successfully initialized new smart contract 🚀 ===='" + +contract_name: + type: str + help: Name of your new contract. + placeholder: "my-new-contract" + default: "my-new-contract" + +_templates_suffix: ".j2" diff --git a/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 b/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 new file mode 100644 index 000000000..829e3a038 --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 @@ -0,0 +1,9 @@ +# pyright: reportMissingModuleSource=false +from algopy import ARC4Contract, String +from algopy.arc4 import abimethod + + +class {{ contract_name.split('_')|map('capitalize')|join }}(ARC4Contract): + @abimethod() + def hello(self, name: String) -> String: + return "Hello, " + name diff --git a/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 b/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 new file mode 100644 index 000000000..eb726b9dd --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 @@ -0,0 +1,35 @@ +import logging + +import algokit_utils +from algosdk.v2client.algod import AlgodClient +from algosdk.v2client.indexer import IndexerClient + +logger = logging.getLogger(__name__) + + +# define deployment behaviour based on supplied app spec +def deploy( + algod_client: AlgodClient, + indexer_client: IndexerClient, + app_spec: algokit_utils.ApplicationSpecification, + deployer: algokit_utils.Account, +) -> None: + from smart_contracts.artifacts.{{ contract_name }}.{{ contract_name }}_client import ( + {{ contract_name.split('_')|map('capitalize')|join }}Client, + ) + + app_client = {{ contract_name.split('_')|map('capitalize')|join }}Client( + algod_client, + creator=deployer, + indexer_client=indexer_client, + ) + app_client.deploy( + on_schema_break=algokit_utils.OnSchemaBreak.AppendApp, + on_update=algokit_utils.OnUpdate.AppendApp, + ) + name = "world" + response = app_client.hello(name=name) + logger.info( + f"Called hello on {app_spec.contract.name} ({app_client.app_id}) " + f"with name={name}, received: {response.return_value}" + ) diff --git a/assets/arc-0062/.algokit/generators/create_env_file/copier.yaml b/assets/arc-0062/.algokit/generators/create_env_file/copier.yaml new file mode 100644 index 000000000..afa2cace0 --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_env_file/copier.yaml @@ -0,0 +1,49 @@ +_tasks: + - "echo '==== Successfully generated new .env file 🚀 ===='" + +target_network: + type: str + help: Name of your target network. + choices: + - mainnet + - testnet + - localnet + - custom + default: "localnet" + when: "{{ not use_generic_env }}" + +custom_network_name: + type: str + help: Name of your custom Algorand network. + placeholder: "custom" + when: "{{ not use_generic_env and target_network == 'custom' }}" + +is_localnet: + type: bool + help: Whether to deploy on localnet. + placeholder: "true" + default: "{{ target_network == 'localnet' and not use_generic_env }}" + when: 'false' + +is_testnet: + type: bool + help: Whether to deploy on testnet. + placeholder: "true" + default: "{{ target_network == 'testnet' and not use_generic_env }}" + when: 'false' + +is_mainnet: + type: bool + help: Whether to deploy on mainnet. + placeholder: "true" + default: "{{ target_network == 'mainnet' and not use_generic_env }}" + when: 'false' + +is_customnet: + type: bool + help: Whether to deploy on custom network. + placeholder: "true" + default: "{{ target_network == 'custom' and not use_generic_env }}" + when: 'false' + +_templates_suffix: ".j2" diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} new file mode 100644 index 000000000..cfc9f21ec --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} @@ -0,0 +1,7 @@ +# this file contains algorand network settings for interacting with testnet via algonode +ALGOD_TOKEN={YOUR_ALGOD_TOKEN} +ALGOD_SERVER={YOUR_ALGOD_SERVER_URL} +ALGOD_PORT={YOUR_ALGOD_PORT} +INDEXER_TOKEN={YOUR_INDEXER_TOKEN} +INDEXER_SERVER={YOUR_INDEXER_SERVER_URL} +INDEXER_PORT={YOUR_INDEXER_PORT} diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} new file mode 100644 index 000000000..fcbf442dd --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} @@ -0,0 +1,7 @@ +# this file should contain environment variables specific to algokit localnet +ALGOD_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ALGOD_SERVER=http://localhost +ALGOD_PORT=4001 +INDEXER_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +INDEXER_SERVER=http://localhost +INDEXER_PORT=8980 diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} new file mode 100644 index 000000000..bb9a78733 --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} @@ -0,0 +1,3 @@ +# this file contains algorand network settings for interacting with testnet via algonode +ALGOD_SERVER=https://mainnet-api.algonode.cloud +INDEXER_SERVER=https://mainnet-idx.algonode.cloud diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} new file mode 100644 index 000000000..eeea43d7f --- /dev/null +++ b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} @@ -0,0 +1,3 @@ +# this file contains algorand network settings for interacting with testnet via algonode +ALGOD_SERVER=https://testnet-api.algonode.cloud +INDEXER_SERVER=https://testnet-idx.algonode.cloud diff --git a/assets/arc-0062/.editorconfig b/assets/arc-0062/.editorconfig new file mode 100644 index 000000000..e2fda3443 --- /dev/null +++ b/assets/arc-0062/.editorconfig @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..6313b56c5 --- /dev/null +++ b/assets/arc-0062/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/assets/arc-0062/.gitignore b/assets/arc-0062/.gitignore new file mode 100644 index 000000000..a858d63cb --- /dev/null +++ b/assets/arc-0062/.gitignore @@ -0,0 +1,180 @@ +# 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 new file mode 100644 index 000000000..4d73d03fc --- /dev/null +++ b/assets/arc-0062/.pre-commit-config.yaml @@ -0,0 +1,76 @@ +repos: + + # YAML + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + + # Markdown + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.41.0 + hooks: + + - id: markdownlint + args: [ "--fix" ] + + # Checkov + - repo: https://github.com/bridgecrewio/checkov.git + rev: 3.2.190 + hooks: + - id: checkov + files: .+ + verbose: false + + + - 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 new file mode 100644 index 000000000..0e259d42c --- /dev/null +++ b/assets/arc-0062/LICENSE @@ -0,0 +1,121 @@ +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 new file mode 100644 index 000000000..59d2a01f9 --- /dev/null +++ b/assets/arc-0062/README.md @@ -0,0 +1,16 @@ +# ARC-62 Reference Implementation + +This is the reference implementation of ASA Circulating Supply App based on the +[ARC-62 specification](../../ARCs/arc-0062.md). + +## Example + +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 new file mode 100644 index 000000000..db07c0761 --- /dev/null +++ b/assets/arc-0062/poetry.lock @@ -0,0 +1,2055 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "aiohttp" +version = "3.9.5" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, + {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, + {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, + {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, + {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, + {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, + {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, + {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, + {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, + {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, +] + +[package.dependencies] +aiosignal = ">=1.1.2" +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "algokit-client-generator" +version = "1.1.5" +description = "Algorand typed client Generator" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "algokit_client_generator-1.1.5-py3-none-any.whl", hash = "sha256:63b386431247913e6d4dc4668793c6eb60c71d59e9cca0ee05f803f284676783"}, +] + +[package.dependencies] +algokit-utils = "2.3.0" + +[[package]] +name = "algokit-utils" +version = "2.3.0" +description = "Utilities for Algorand development for use by AlgoKit" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "algokit_utils-2.3.0-py3-none-any.whl", hash = "sha256:551b7f5a082784d9a47d973749ca208936fd03f07f1cd08748085bd8bf249779"}, +] + +[package.dependencies] +deprecated = ">=1.2.14,<2.0.0" +httpx = ">=0.23.1,<0.24.0" +py-algorand-sdk = ">=2.4.0,<3.0.0" + +[[package]] +name = "algorand-python" +version = "1.2.1" +description = "API for writing Algorand Python Smart contracts" +optional = false +python-versions = "<4.0,>=3.12" +files = [ + {file = "algorand_python-1.2.1-py3-none-any.whl", hash = "sha256:be308cca22b780dc8db1ba19540c413fa9018d4239e01bbda39a93db45154d32"}, +] + +[[package]] +name = "algorand-python-testing" +version = "0.2.1" +description = "Algorand Python testing library" +optional = false +python-versions = ">=3.12" +files = [ + {file = "algorand_python_testing-0.2.1-py3-none-any.whl", hash = "sha256:8d14986fdd9e9ec07eab59512061705cdde96a16a6852c7a54fdea0178df6b71"}, + {file = "algorand_python_testing-0.2.1.tar.gz", hash = "sha256:11ffd9fdce8fba9bea9198352d0e5a43a98297c153f6fb971cd32a8874c95328"}, +] + +[package.dependencies] +algorand-python = ">=1,<1.3.0" +coincurve = ">=19.0.1" +ecdsa = ">=0.17.0" +pycryptodomex = ">=3.6.0,<4" +pynacl = ">=1.4.0,<2" + +[[package]] +name = "anyio" +version = "4.4.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + +[[package]] +name = "asn1crypto" +version = "1.5.1" +description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" +optional = false +python-versions = "*" +files = [ + {file = "asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67"}, + {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"}, +] + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "black" +version = "24.4.2" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.8" +files = [ + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, + {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, + {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, + {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, + {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, + {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, + {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, + {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, +] + +[package.dependencies] +aiohttp = [ + {version = ">=3.7.4,<3.9.0 || >3.9.0", optional = true, markers = "sys_platform == \"win32\" and implementation_name == \"pypy\" and extra == \"d\""}, + {version = ">=3.7.4", optional = true, markers = "sys_platform != \"win32\" and extra == \"d\" or implementation_name != \"pypy\" and extra == \"d\""}, +] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "boolean-py" +version = "4.0" +description = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL." +optional = false +python-versions = "*" +files = [ + {file = "boolean.py-4.0-py3-none-any.whl", hash = "sha256:2876f2051d7d6394a531d82dc6eb407faa0b01a0a0b3083817ccd7323b8d96bd"}, + {file = "boolean.py-4.0.tar.gz", hash = "sha256:17b9a181630e43dde1851d42bef546d616d5d9b4480357514597e78b203d06e4"}, +] + +[[package]] +name = "cachecontrol" +version = "0.14.0" +description = "httplib2 caching for requests" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachecontrol-0.14.0-py3-none-any.whl", hash = "sha256:f5bf3f0620c38db2e5122c0726bdebb0d16869de966ea6a2befe92470b740ea0"}, + {file = "cachecontrol-0.14.0.tar.gz", hash = "sha256:7db1195b41c81f8274a7bbd97c956f44e8348265a1bc7641c37dfebc39f0c938"}, +] + +[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]", "black", "build", "cherrypy", "furo", "mypy", "pytest", "pytest-cov", "sphinx", "sphinx-copybutton", "tox", "types-redis", "types-requests"] +filecache = ["filelock (>=3.8.0)"] +redis = ["redis (>=2.10.5)"] + +[[package]] +name = "certifi" +version = "2024.7.4" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, +] + +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +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.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "coincurve" +version = "20.0.0" +description = "Cross-platform Python CFFI bindings for libsecp256k1" +optional = false +python-versions = ">=3.8" +files = [ + {file = "coincurve-20.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d559b22828638390118cae9372a1bb6f6594f5584c311deb1de6a83163a0919b"}, + {file = "coincurve-20.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:33d7f6ebd90fcc550f819f7f2cce2af525c342aac07f0ccda46ad8956ad9d99b"}, + {file = "coincurve-20.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22d70dd55d13fd427418eb41c20fde0a20a5e5f016e2b1bb94710701e759e7e0"}, + {file = "coincurve-20.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f18d481eaae72c169f334cde1fd22011a884e0c9c6adc3fdc1fd13df8236a3"}, + {file = "coincurve-20.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9de1ec57f43c3526bc462be58fb97910dc1fdd5acab6c71eda9f9719a5bd7489"}, + {file = "coincurve-20.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a6f007c44c726b5c0b3724093c0d4fb8e294f6b6869beb02d7473b21777473a3"}, + {file = "coincurve-20.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0ff1f3b81330db5092c24da2102e4fcba5094f14945b3eb40746456ceabdd6d9"}, + {file = "coincurve-20.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82f7de97694d9343f26bd1c8e081b168e5f525894c12445548ce458af227f536"}, + {file = "coincurve-20.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e905b4b084b4f3b61e5a5d58ac2632fd1d07b7b13b4c6d778335a6ca1dafd7a3"}, + {file = "coincurve-20.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:3657bb5ed0baf1cf8cf356e7d44aa90a7902cc3dd4a435c6d4d0bed0553ad4f7"}, + {file = "coincurve-20.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:44087d1126d43925bf9a2391ce5601bf30ce0dba4466c239172dc43226696018"}, + {file = "coincurve-20.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccf0ba38b0f307a9b3ce28933f6c71dc12ef3a0985712ca09f48591afd597c8"}, + {file = "coincurve-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:566bc5986debdf8572b6be824fd4de03d533c49f3de778e29f69017ae3fe82d8"}, + {file = "coincurve-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4d70283168e146f025005c15406086513d5d35e89a60cf4326025930d45013a"}, + {file = "coincurve-20.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:763c6122dd7d5e7a81c86414ce360dbe9a2d4afa1ca6c853ee03d63820b3d0c5"}, + {file = "coincurve-20.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f00c361c356bcea386d47a191bb8ac60429f4b51c188966a201bfecaf306ff7f"}, + {file = "coincurve-20.0.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4af57bdadd2e64d117dd0b33cfefe76e90c7a6c496a7b034fc65fd01ec249b15"}, + {file = "coincurve-20.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a26437b7cbde13fb6e09261610b788ca2a0ca2195c62030afd1e1e0d1a62e035"}, + {file = "coincurve-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:ed51f8bba35e6c7676ad65539c3dbc35acf014fc402101fa24f6b0a15a74ab9e"}, + {file = "coincurve-20.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:594b840fc25d74118407edbbbc754b815f1bba9759dbf4f67f1c2b78396df2d3"}, + {file = "coincurve-20.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4df4416a6c0370d777aa725a25b14b04e45aa228da1251c258ff91444643f688"}, + {file = "coincurve-20.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1ccc3e4db55abf3fc0e604a187fdb05f0702bc5952e503d9a75f4ae6eeb4cb3a"}, + {file = "coincurve-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac8335b1658a2ef5b3eb66d52647742fe8c6f413ad5b9d5310d7ea6d8060d40f"}, + {file = "coincurve-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7ac025e485a0229fd5394e0bf6b4a75f8a4f6cee0dcf6f0b01a2ef05c5210ff"}, + {file = "coincurve-20.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e46e3f1c21b3330857bcb1a3a5b942f645c8bce912a8a2b252216f34acfe4195"}, + {file = "coincurve-20.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:df9ff9b17a1d27271bf476cf3fa92df4c151663b11a55d8cea838b8f88d83624"}, + {file = "coincurve-20.0.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4155759f071375699282e03b3d95fb473ee05c022641c077533e0d906311e57a"}, + {file = "coincurve-20.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0530b9dd02fc6f6c2916716974b79bdab874227f560c422801ade290e3fc5013"}, + {file = "coincurve-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:eacf9c0ce8739c84549a89c083b1f3526c8780b84517ee75d6b43d276e55f8a0"}, + {file = "coincurve-20.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:52a67bfddbd6224dfa42085c88ad176559801b57d6a8bd30d92ee040de88b7b3"}, + {file = "coincurve-20.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:61e951b1d695b62376f60519a84c4facaf756eeb9c5aff975bea0942833f185d"}, + {file = "coincurve-20.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e9e548db77f4ea34c0d748dddefc698adb0ee3fab23ed19f80fb2118dac70f6"}, + {file = "coincurve-20.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdbf0da0e0809366fdfff236b7eb6e663669c7b1f46361a4c4d05f5b7e94c57"}, + {file = "coincurve-20.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d72222b4ecd3952e8ffcbf59bc7e0d1b181161ba170b60e5c8e1f359a43bbe7e"}, + {file = "coincurve-20.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9add43c4807f0c17a940ce4076334c28f51d09c145cd478400e89dcfb83fb59d"}, + {file = "coincurve-20.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bcc94cceea6ec8863815134083e6221a034b1ecef822d0277cf6ad2e70009b7f"}, + {file = "coincurve-20.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ffbdfef6a6d147988eabaed681287a9a7e6ba45ecc0a8b94ba62ad0a7656d97"}, + {file = "coincurve-20.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13335c19c7e5f36eaba2a53c68073d981980d7dc7abfee68d29f2da887ccd24e"}, + {file = "coincurve-20.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:7fbfb8d16cf2bea2cf48fc5246d4cb0a06607d73bb5c57c007c9aed7509f855e"}, + {file = "coincurve-20.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4870047704cddaae7f0266a549c927407c2ba0ec92d689e3d2b511736812a905"}, + {file = "coincurve-20.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81ce41263517b0a9f43cd570c87720b3c13324929584fa28d2e4095969b6015d"}, + {file = "coincurve-20.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572083ccce6c7b514d482f25f394368f4ae888f478bd0b067519d33160ea2fcc"}, + {file = "coincurve-20.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee5bc78a31a2f1370baf28aaff3949bc48f940a12b0359d1cd2c4115742874e6"}, + {file = "coincurve-20.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2895d032e281c4e747947aae4bcfeef7c57eabfd9be22886c0ca4e1365c7c1f"}, + {file = "coincurve-20.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d3e2f21957ada0e1742edbde117bb41758fa8691b69c8d186c23e9e522ea71cd"}, + {file = "coincurve-20.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c2baa26b1aad1947ca07b3aa9e6a98940c5141c6bdd0f9b44d89e36da7282ffa"}, + {file = "coincurve-20.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7eacc7944ddf9e2b7448ecbe84753841ab9874b8c332a4f5cc3b2f184db9f4a2"}, + {file = "coincurve-20.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:c293c095dc690178b822cadaaeb81de3cc0d28f8bdf8216ed23551dcce153a26"}, + {file = "coincurve-20.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:11a47083a0b7092d3eb50929f74ffd947c4a5e7035796b81310ea85289088c7a"}, + {file = "coincurve-20.0.0.tar.gz", hash = "sha256:872419e404300302e938849b6b92a196fabdad651060b559dc310e52f8392829"}, +] + +[package.dependencies] +asn1crypto = "*" +cffi = ">=1.3.0" + +[package.extras] +dev = ["coverage", "pytest", "pytest-benchmark"] + +[[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" +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.6.0" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, + {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, + {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, + {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, + {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, + {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, + {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"}, + {file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"}, + {file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, + {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, + {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, + {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, + {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "cyclonedx-python-lib" +version = "7.5.1" +description = "Python library for CycloneDX" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "cyclonedx_python_lib-7.5.1-py3-none-any.whl", hash = "sha256:9fc2c2e5facfd9530ede1f4525c903d29d91945688c5689b6d5fab46381dcab9"}, + {file = "cyclonedx_python_lib-7.5.1.tar.gz", hash = "sha256:00cfe1e58452698650ae08b8f4389f7b1ec203a3e1c50cbf6ca6d320941dfb3f"}, +] + +[package.dependencies] +license-expression = ">=30,<31" +packageurl-python = ">=0.11,<2" +py-serializable = ">=1.1.0,<2.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 = "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.*" +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 = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + +[[package]] +name = "distlib" +version = "0.3.8" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, +] + +[[package]] +name = "docstring-parser" +version = "0.16" +description = "Parse Python docstrings in reST, Google and Numpydoc format" +optional = false +python-versions = ">=3.6,<4.0" +files = [ + {file = "docstring_parser-0.16-py3-none-any.whl", hash = "sha256:bf0a1387354d3691d102edef7ec124f219ef639982d096e26e3b60aeffa90637"}, + {file = "docstring_parser-0.16.tar.gz", hash = "sha256:538beabd0af1e2db0146b6bd3caa526c35a34d61af9fd2887f3a8a27a739aa6e"}, +] + +[[package]] +name = "ecdsa" +version = "0.19.0" +description = "ECDSA cryptographic signature library (pure python)" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.6" +files = [ + {file = "ecdsa-0.19.0-py2.py3-none-any.whl", hash = "sha256:2cea9b88407fdac7bbeca0833b189e4c9c53f2ef1e1eaa29f6224dbc809b707a"}, + {file = "ecdsa-0.19.0.tar.gz", hash = "sha256:60eaad1199659900dd0af521ed462b793bbdf867432b3948e87416ae4caf6bf8"}, +] + +[package.dependencies] +six = ">=1.9.0" + +[package.extras] +gmpy = ["gmpy"] +gmpy2 = ["gmpy2"] + +[[package]] +name = "filelock" +version = "3.15.4" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, + {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] +typing = ["typing-extensions (>=4.8)"] + +[[package]] +name = "frozenlist" +version = "1.4.1" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, +] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "html5lib" +version = "1.1" +description = "HTML parser based on the WHATWG HTML specification" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"}, + {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"}, +] + +[package.dependencies] +six = ">=1.9" +webencodings = "*" + +[package.extras] +all = ["chardet (>=2.2)", "genshi", "lxml"] +chardet = ["chardet (>=2.2)"] +genshi = ["genshi"] +lxml = ["lxml"] + +[[package]] +name = "httpcore" +version = "0.16.3" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.7" +files = [ + {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, + {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, +] + +[package.dependencies] +anyio = ">=3.0,<5.0" +certifi = "*" +h11 = ">=0.13,<0.15" +sniffio = "==1.*" + +[package.extras] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "httpx" +version = "0.23.3" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.7" +files = [ + {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, + {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, +] + +[package.dependencies] +certifi = "*" +httpcore = ">=0.15.0,<0.17.0" +rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "identify" +version = "2.6.0" +description = "File identification library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, + {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "immutabledict" +version = "4.2.0" +description = "Immutable wrapper around dictionaries (a fork of frozendict)" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "immutabledict-4.2.0-py3-none-any.whl", hash = "sha256:d728b2c2410d698d95e6200237feb50a695584d20289ad3379a439aa3d90baba"}, + {file = "immutabledict-4.2.0.tar.gz", hash = "sha256:e003fd81aad2377a5a758bf7e1086cf3b70b63e9a5cc2f46bce8d0a2b4727c5f"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "license-expression" +version = "30.3.0" +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.8" +files = [ + {file = "license-expression-30.3.0.tar.gz", hash = "sha256:1295406f736b4f395ff069aec1cebfad53c0fcb3cf57df0f5ec58fc7b905aea5"}, + {file = "license_expression-30.3.0-py3-none-any.whl", hash = "sha256:ae0ba9a829d6909c785dc2f0131f13d10d68318e4a5f28af5ef152d6b52f9b41"}, +] + +[package.dependencies] +"boolean.py" = ">=4.0" + +[package.extras] +docs = ["Sphinx (>=5.0.2)", "doc8 (>=0.11.2)", "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)"] +testing = ["black", "isort", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)", "twine"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +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.0.8" +description = "MessagePack serializer" +optional = false +python-versions = ">=3.8" +files = [ + {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:505fe3d03856ac7d215dbe005414bc28505d26f0c128906037e66d98c4e95868"}, + {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6b7842518a63a9f17107eb176320960ec095a8ee3b4420b5f688e24bf50c53c"}, + {file = "msgpack-1.0.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:376081f471a2ef24828b83a641a02c575d6103a3ad7fd7dade5486cad10ea659"}, + {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e390971d082dba073c05dbd56322427d3280b7cc8b53484c9377adfbae67dc2"}, + {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e073efcba9ea99db5acef3959efa45b52bc67b61b00823d2a1a6944bf45982"}, + {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82d92c773fbc6942a7a8b520d22c11cfc8fd83bba86116bfcf962c2f5c2ecdaa"}, + {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9ee32dcb8e531adae1f1ca568822e9b3a738369b3b686d1477cbc643c4a9c128"}, + {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e3aa7e51d738e0ec0afbed661261513b38b3014754c9459508399baf14ae0c9d"}, + {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69284049d07fce531c17404fcba2bb1df472bc2dcdac642ae71a2d079d950653"}, + {file = "msgpack-1.0.8-cp310-cp310-win32.whl", hash = "sha256:13577ec9e247f8741c84d06b9ece5f654920d8365a4b636ce0e44f15e07ec693"}, + {file = "msgpack-1.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:e532dbd6ddfe13946de050d7474e3f5fb6ec774fbb1a188aaf469b08cf04189a"}, + {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9517004e21664f2b5a5fd6333b0731b9cf0817403a941b393d89a2f1dc2bd836"}, + {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d16a786905034e7e34098634b184a7d81f91d4c3d246edc6bd7aefb2fd8ea6ad"}, + {file = "msgpack-1.0.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2872993e209f7ed04d963e4b4fbae72d034844ec66bc4ca403329db2074377b"}, + {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c330eace3dd100bdb54b5653b966de7f51c26ec4a7d4e87132d9b4f738220ba"}, + {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b5c044f3eff2a6534768ccfd50425939e7a8b5cf9a7261c385de1e20dcfc85"}, + {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1876b0b653a808fcd50123b953af170c535027bf1d053b59790eebb0aeb38950"}, + {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dfe1f0f0ed5785c187144c46a292b8c34c1295c01da12e10ccddfc16def4448a"}, + {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3528807cbbb7f315bb81959d5961855e7ba52aa60a3097151cb21956fbc7502b"}, + {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e2f879ab92ce502a1e65fce390eab619774dda6a6ff719718069ac94084098ce"}, + {file = "msgpack-1.0.8-cp311-cp311-win32.whl", hash = "sha256:26ee97a8261e6e35885c2ecd2fd4a6d38252246f94a2aec23665a4e66d066305"}, + {file = "msgpack-1.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:eadb9f826c138e6cf3c49d6f8de88225a3c0ab181a9b4ba792e006e5292d150e"}, + {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:114be227f5213ef8b215c22dde19532f5da9652e56e8ce969bf0a26d7c419fee"}, + {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d661dc4785affa9d0edfdd1e59ec056a58b3dbb9f196fa43587f3ddac654ac7b"}, + {file = "msgpack-1.0.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d56fd9f1f1cdc8227d7b7918f55091349741904d9520c65f0139a9755952c9e8"}, + {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0726c282d188e204281ebd8de31724b7d749adebc086873a59efb8cf7ae27df3"}, + {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8db8e423192303ed77cff4dce3a4b88dbfaf43979d280181558af5e2c3c71afc"}, + {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99881222f4a8c2f641f25703963a5cefb076adffd959e0558dc9f803a52d6a58"}, + {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b5505774ea2a73a86ea176e8a9a4a7c8bf5d521050f0f6f8426afe798689243f"}, + {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ef254a06bcea461e65ff0373d8a0dd1ed3aa004af48839f002a0c994a6f72d04"}, + {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1dd7839443592d00e96db831eddb4111a2a81a46b028f0facd60a09ebbdd543"}, + {file = "msgpack-1.0.8-cp312-cp312-win32.whl", hash = "sha256:64d0fcd436c5683fdd7c907eeae5e2cbb5eb872fafbc03a43609d7941840995c"}, + {file = "msgpack-1.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:74398a4cf19de42e1498368c36eed45d9528f5fd0155241e82c4082b7e16cffd"}, + {file = "msgpack-1.0.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ceea77719d45c839fd73abcb190b8390412a890df2f83fb8cf49b2a4b5c2f40"}, + {file = "msgpack-1.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ab0bbcd4d1f7b6991ee7c753655b481c50084294218de69365f8f1970d4c151"}, + {file = "msgpack-1.0.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1cce488457370ffd1f953846f82323cb6b2ad2190987cd4d70b2713e17268d24"}, + {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3923a1778f7e5ef31865893fdca12a8d7dc03a44b33e2a5f3295416314c09f5d"}, + {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22e47578b30a3e199ab067a4d43d790249b3c0587d9a771921f86250c8435db"}, + {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd739c9251d01e0279ce729e37b39d49a08c0420d3fee7f2a4968c0576678f77"}, + {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3420522057ebab1728b21ad473aa950026d07cb09da41103f8e597dfbfaeb13"}, + {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5845fdf5e5d5b78a49b826fcdc0eb2e2aa7191980e3d2cfd2a30303a74f212e2"}, + {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a0e76621f6e1f908ae52860bdcb58e1ca85231a9b0545e64509c931dd34275a"}, + {file = "msgpack-1.0.8-cp38-cp38-win32.whl", hash = "sha256:374a8e88ddab84b9ada695d255679fb99c53513c0a51778796fcf0944d6c789c"}, + {file = "msgpack-1.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:f3709997b228685fe53e8c433e2df9f0cdb5f4542bd5114ed17ac3c0129b0480"}, + {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f51bab98d52739c50c56658cc303f190785f9a2cd97b823357e7aeae54c8f68a"}, + {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:73ee792784d48aa338bba28063e19a27e8d989344f34aad14ea6e1b9bd83f596"}, + {file = "msgpack-1.0.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f9904e24646570539a8950400602d66d2b2c492b9010ea7e965025cb71d0c86d"}, + {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e75753aeda0ddc4c28dce4c32ba2f6ec30b1b02f6c0b14e547841ba5b24f753f"}, + {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dbf059fb4b7c240c873c1245ee112505be27497e90f7c6591261c7d3c3a8228"}, + {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4916727e31c28be8beaf11cf117d6f6f188dcc36daae4e851fee88646f5b6b18"}, + {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7938111ed1358f536daf311be244f34df7bf3cdedb3ed883787aca97778b28d8"}, + {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:493c5c5e44b06d6c9268ce21b302c9ca055c1fd3484c25ba41d34476c76ee746"}, + {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fbb160554e319f7b22ecf530a80a3ff496d38e8e07ae763b9e82fadfe96f273"}, + {file = "msgpack-1.0.8-cp39-cp39-win32.whl", hash = "sha256:f9af38a89b6a5c04b7d18c492c8ccf2aee7048aff1ce8437c4683bb5a1df893d"}, + {file = "msgpack-1.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:ed59dd52075f8fc91da6053b12e8c89e37aa043f8986efd89e61fae69dc1b011"}, + {file = "msgpack-1.0.8.tar.gz", hash = "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3"}, +] + +[[package]] +name = "multidict" +version = "6.0.5" +description = "multidict implementation" +optional = false +python-versions = ">=3.7" +files = [ + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, +] + +[[package]] +name = "mypy" +version = "1.10.1" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, + {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, + {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, + {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, + {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, + {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, + {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, + {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, + {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, + {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, + {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, + {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, + {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, + {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, + {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, + {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, + {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, + {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[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" +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.15.3" +description = "A purl aka. Package URL parser and builder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packageurl_python-0.15.3-py3-none-any.whl", hash = "sha256:96624702032239e70e61b950e14460a5b5f87ac21fc68f119414047b94f0de27"}, + {file = "packageurl_python-0.15.3.tar.gz", hash = "sha256:82e1150f1fc228e25e7b3be1c641ef96b6a0811526c0b4e4f7882a181e862607"}, +] + +[package.extras] +build = ["setuptools", "wheel"] +lint = ["black", "isort", "mypy"] +sqlalchemy = ["sqlalchemy (>=2.0.0)"] +test = ["pytest"] + +[[package]] +name = "packaging" +version = "24.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +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 = "24.1.2" +description = "The PyPA recommended tool for installing Python packages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pip-24.1.2-py3-none-any.whl", hash = "sha256:7cd207eed4c60b0f411b444cd1464198fe186671c323b6cd6d433ed80fc9d247"}, + {file = "pip-24.1.2.tar.gz", hash = "sha256:e5458a0b89f2755e0ee8c0c77613fe5273e05f337907874d64f13171a898a7ff"}, +] + +[[package]] +name = "pip-api" +version = "0.0.34" +description = "An unofficial, importable pip API" +optional = false +python-versions = ">=3.8" +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.7.3" +description = "A tool for scanning Python environments for known vulnerabilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pip_audit-2.7.3-py3-none-any.whl", hash = "sha256:46a11faee3323f76adf7987de8171daeb660e8f57d8088cc27fb1c1e5c7747b0"}, + {file = "pip_audit-2.7.3.tar.gz", hash = "sha256:08891bbf179bffe478521f150818112bae998424f58bf9285c0078965aef38bc"}, +] + +[package.dependencies] +CacheControl = {version = ">=0.13.0", extras = ["filecache"]} +cyclonedx-python-lib = ">=5,<8" +html5lib = ">=1.1" +packaging = ">=23.0.0" +pip-api = ">=0.0.28" +pip-requirements-parser = ">=32.0.0" +requests = ">=2.31.0" +rich = ">=12.4" +toml = ">=0.10" + +[package.extras] +dev = ["build", "bump (>=1.3.2)", "pip-audit[doc,lint,test]"] +doc = ["pdoc"] +lint = ["interrogate", "mypy", "ruff (<0.4.3)", "setuptools", "types-html5lib", "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" +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.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pre-commit" +version = "3.7.1" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, + {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "puyapy" +version = "2.1.2" +description = "An optimising compiler for Algorand Python" +optional = false +python-versions = "<4.0,>=3.12" +files = [ + {file = "puyapy-2.1.2-py3-none-any.whl", hash = "sha256:33ea55aebf66cae8f3600ae8a48ec4449549ef8aa185581c6bbed13303f04a96"}, +] + +[package.dependencies] +attrs = ">=23.2.0,<24.0.0" +colorama = {version = ">=0.4.6,<0.5.0", markers = "sys_platform == \"win32\""} +docstring-parser = ">=0.14.1" +immutabledict = ">=4.2.0,<5.0.0" +mypy_extensions = ">=1.0.0,<2.0.0" +packaging = ">=24.0,<25.0" +pycryptodomex = ">=3.6.0,<4" +structlog = ">=24.1.0,<25.0.0" +typing-extensions = ">=4.11.0,<5.0.0" + +[[package]] +name = "py-algorand-sdk" +version = "2.6.1" +description = "Algorand SDK in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "py-algorand-sdk-2.6.1.tar.gz", hash = "sha256:9223929d05f532a9295711c5ff945aa8aa854bc5efedb37b821f15335106ea14"}, + {file = "py_algorand_sdk-2.6.1-py3-none-any.whl", hash = "sha256:1257b0999f4c67dd66e0517da5081e014953d0a7d14edecc45d53b8aba1b7328"}, +] + +[package.dependencies] +msgpack = ">=1.0.0,<2" +pycryptodomex = ">=3.6.0,<4" +pynacl = ">=1.4.0,<2" + +[[package]] +name = "py-serializable" +version = "1.1.0" +description = "Library for serializing and deserializing Python Objects to and from JSON and XML." +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "py_serializable-1.1.0-py3-none-any.whl", hash = "sha256:ae7ae4326b0d037b7e710f6e8bb1a97ece4ac2895a1f443a17ffd17f85547d76"}, + {file = "py_serializable-1.1.0.tar.gz", hash = "sha256:3311ab39063b131caca0fb75e2038153682e55576c67f24a2de72d402dccb6e0"}, +] + +[package.dependencies] +defusedxml = ">=0.7.1,<0.8.0" + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pycryptodomex" +version = "3.20.0" +description = "Cryptographic library for Python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "pycryptodomex-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:645bd4ca6f543685d643dadf6a856cc382b654cc923460e3a10a49c1b3832aeb"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ff5c9a67f8a4fba4aed887216e32cbc48f2a6fb2673bb10a99e43be463e15913"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8ee606964553c1a0bc74057dd8782a37d1c2bc0f01b83193b6f8bb14523b877b"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7805830e0c56d88f4d491fa5ac640dfc894c5ec570d1ece6ed1546e9df2e98d6"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:bc3ee1b4d97081260d92ae813a83de4d2653206967c4a0a017580f8b9548ddbc"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-win32.whl", hash = "sha256:8af1a451ff9e123d0d8bd5d5e60f8e3315c3a64f3cdd6bc853e26090e195cdc8"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-win_amd64.whl", hash = "sha256:cbe71b6712429650e3883dc81286edb94c328ffcd24849accac0a4dbcc76958a"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:76bd15bb65c14900d98835fcd10f59e5e0435077431d3a394b60b15864fddd64"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:653b29b0819605fe0898829c8ad6400a6ccde096146730c2da54eede9b7b8baa"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62a5ec91388984909bb5398ea49ee61b68ecb579123694bffa172c3b0a107079"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:108e5f1c1cd70ffce0b68739c75734437c919d2eaec8e85bffc2c8b4d2794305"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:59af01efb011b0e8b686ba7758d59cf4a8263f9ad35911bfe3f416cee4f5c08c"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:82ee7696ed8eb9a82c7037f32ba9b7c59e51dda6f105b39f043b6ef293989cb3"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91852d4480a4537d169c29a9d104dda44094c78f1f5b67bca76c29a91042b623"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca649483d5ed251d06daf25957f802e44e6bb6df2e8f218ae71968ff8f8edc4"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e186342cfcc3aafaad565cbd496060e5a614b441cacc3995ef0091115c1f6c5"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:25cd61e846aaab76d5791d006497134602a9e451e954833018161befc3b5b9ed"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:9c682436c359b5ada67e882fec34689726a09c461efd75b6ea77b2403d5665b7"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:7a7a8f33a1f1fb762ede6cc9cbab8f2a9ba13b196bfaf7bc6f0b39d2ba315a43"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-win32.whl", hash = "sha256:c39778fd0548d78917b61f03c1fa8bfda6cfcf98c767decf360945fe6f97461e"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-win_amd64.whl", hash = "sha256:2a47bcc478741b71273b917232f521fd5704ab4b25d301669879e7273d3586cc"}, + {file = "pycryptodomex-3.20.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:1be97461c439a6af4fe1cf8bf6ca5936d3db252737d2f379cc6b2e394e12a458"}, + {file = "pycryptodomex-3.20.0-pp27-pypy_73-win32.whl", hash = "sha256:19764605feea0df966445d46533729b645033f134baeb3ea26ad518c9fdf212c"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f2e497413560e03421484189a6b65e33fe800d3bd75590e6d78d4dfdb7accf3b"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48217c7901edd95f9f097feaa0388da215ed14ce2ece803d3f300b4e694abea"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d00fe8596e1cc46b44bf3907354e9377aa030ec4cd04afbbf6e899fc1e2a7781"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:88afd7a3af7ddddd42c2deda43d53d3dfc016c11327d0915f90ca34ebda91499"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d3584623e68a5064a04748fb6d76117a21a7cb5eaba20608a41c7d0c61721794"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0daad007b685db36d977f9de73f61f8da2a7104e20aca3effd30752fd56f73e1"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dcac11031a71348faaed1f403a0debd56bf5404232284cf8c761ff918886ebc"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69138068268127cd605e03438312d8f271135a33140e2742b417d027a0539427"}, + {file = "pycryptodomex-3.20.0.tar.gz", hash = "sha256:7a710b79baddd65b806402e14766c721aee8fb83381769c27920f26476276c1e"}, +] + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pynacl" +version = "1.5.0" +description = "Python binding to the Networking and Cryptography (NaCl) library" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, + {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, +] + +[package.dependencies] +cffi = ">=1.4.1" + +[package.extras] +docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] +tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] + +[[package]] +name = "pyparsing" +version = "3.1.2" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "8.2.2" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2.0" + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "5.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[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 = "rfc3986" +version = "1.5.0" +description = "Validating URI References per RFC 3986" +optional = false +python-versions = "*" +files = [ + {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, + {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, +] + +[package.dependencies] +idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} + +[package.extras] +idna2008 = ["idna"] + +[[package]] +name = "rich" +version = "13.7.1" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, + {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, +] + +[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 = "ruff" +version = "0.5.2" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.5.2-py3-none-linux_armv6l.whl", hash = "sha256:7bab8345df60f9368d5f4594bfb8b71157496b44c30ff035d1d01972e764d3be"}, + {file = "ruff-0.5.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:1aa7acad382ada0189dbe76095cf0a36cd0036779607c397ffdea16517f535b1"}, + {file = "ruff-0.5.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:aec618d5a0cdba5592c60c2dee7d9c865180627f1a4a691257dea14ac1aa264d"}, + {file = "ruff-0.5.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b62adc5ce81780ff04077e88bac0986363e4a3260ad3ef11ae9c14aa0e67ef"}, + {file = "ruff-0.5.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dc42ebf56ede83cb080a50eba35a06e636775649a1ffd03dc986533f878702a3"}, + {file = "ruff-0.5.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c15c6e9f88c67ffa442681365d11df38afb11059fc44238e71a9d9f1fd51de70"}, + {file = "ruff-0.5.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d3de9a5960f72c335ef00763d861fc5005ef0644cb260ba1b5a115a102157251"}, + {file = "ruff-0.5.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe5a968ae933e8f7627a7b2fc8893336ac2be0eb0aace762d3421f6e8f7b7f83"}, + {file = "ruff-0.5.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a04f54a9018f75615ae52f36ea1c5515e356e5d5e214b22609ddb546baef7132"}, + {file = "ruff-0.5.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed02fb52e3741f0738db5f93e10ae0fb5c71eb33a4f2ba87c9a2fa97462a649"}, + {file = "ruff-0.5.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3cf8fe659f6362530435d97d738eb413e9f090e7e993f88711b0377fbdc99f60"}, + {file = "ruff-0.5.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:237a37e673e9f3cbfff0d2243e797c4862a44c93d2f52a52021c1a1b0899f846"}, + {file = "ruff-0.5.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2a2949ce7c1cbd8317432ada80fe32156df825b2fd611688814c8557824ef060"}, + {file = "ruff-0.5.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:481af57c8e99da92ad168924fd82220266043c8255942a1cb87958b108ac9335"}, + {file = "ruff-0.5.2-py3-none-win32.whl", hash = "sha256:f1aea290c56d913e363066d83d3fc26848814a1fed3d72144ff9c930e8c7c718"}, + {file = "ruff-0.5.2-py3-none-win_amd64.whl", hash = "sha256:8532660b72b5d94d2a0a7a27ae7b9b40053662d00357bb2a6864dd7e38819084"}, + {file = "ruff-0.5.2-py3-none-win_arm64.whl", hash = "sha256:73439805c5cb68f364d826a5c5c4b6c798ded6b7ebaa4011f01ce6c94e4d5583"}, + {file = "ruff-0.5.2.tar.gz", hash = "sha256:2c0df2d2de685433794a14d8d2e240df619b748fbe3367346baa519d8e6f1ca2"}, +] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +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 = "*" +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 = "24.2.0" +description = "Structured Logging for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "structlog-24.2.0-py3-none-any.whl", hash = "sha256:983bd49f70725c5e1e3867096c0c09665918936b3db27341b41d294283d7a48a"}, + {file = "structlog-24.2.0.tar.gz", hash = "sha256:0e3fe74924a6d8857d3f612739efb94c72a7417d7c7c008d12276bca3b5bf13b"}, +] + +[package.extras] +dev = ["freezegun (>=0.2.8)", "mypy (>=1.4)", "pretend", "pytest (>=6.0)", "pytest-asyncio (>=0.17)", "rich", "simplejson", "twisted"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "sphinxext-opengraph", "twisted"] +tests = ["freezegun (>=0.2.8)", "pretend", "pytest (>=6.0)", "pytest-asyncio (>=0.17)", "simplejson"] +typing = ["mypy (>=1.4)", "rich", "twisted"] + +[[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.*" +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.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "urllib3" +version = "2.2.2" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "virtualenv" +version = "20.26.3" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, + {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, +] + +[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)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "wrapt" +version = "1.16.0" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] + +[[package]] +name = "yarl" +version = "1.9.4" +description = "Yet another URL library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +lock-version = "2.0" +python-versions = "^3.12" +content-hash = "cdd7b9c7fe32057624676a924b8b4f48979b341d543957652d3385a4491cf4cd" diff --git a/assets/arc-0062/poetry.toml b/assets/arc-0062/poetry.toml new file mode 100644 index 000000000..ab1033bd3 --- /dev/null +++ b/assets/arc-0062/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/assets/arc-0062/pyproject.toml b/assets/arc-0062/pyproject.toml new file mode 100644 index 000000000..10e4bded5 --- /dev/null +++ b/assets/arc-0062/pyproject.toml @@ -0,0 +1,64 @@ +[tool.poetry] +name = "asa-circulating-supply" +version = "0.1.0" +description = "Algorand smart contracts" +authors = ["cusma "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.12" +algokit-utils = "^2.3.0" +python-dotenv = "^1.0.0" +algorand-python = "^1.0.0" +algorand-python-testing = "^0.2.1" + +[tool.poetry.group.dev.dependencies] +algokit-client-generator = "^1.1.3" +black = {extras = ["d"], version = "*"} +ruff = "^0.5.2" +mypy = "*" +pytest = "*" +pytest-cov = "*" +pip-audit = "*" +pre-commit = "*" +puyapy = "*" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + +[tool.ruff] +line-length = 120 +select = ["E", "F", "ANN", "UP", "N", "C4", "B", "A", "YTT", "W", "FBT", "Q", "RUF", "I"] +ignore = [ + "ANN101", # no type for self + "ANN102", # no type for cls +] +unfixable = ["B", "RUF"] + +[tool.ruff.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 new file mode 100644 index 000000000..e69de29bb diff --git a/assets/arc-0062/smart_contracts/__main__.py b/assets/arc-0062/smart_contracts/__main__.py new file mode 100644 index 000000000..ab2e910b8 --- /dev/null +++ b/assets/arc-0062/smart_contracts/__main__.py @@ -0,0 +1,64 @@ +import logging +import sys +from pathlib import Path + +from dotenv import load_dotenv + +from smart_contracts._helpers.build import build +from smart_contracts._helpers.config import contracts +from smart_contracts._helpers.deploy import deploy + +# Uncomment the following lines to enable auto generation of AVM Debugger compliant sourcemap and simulation trace file. +# 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 +# from algokit_utils.config import config +# config.configure(debug=True, trace_all=True) +logging.basicConfig( + level=logging.DEBUG, format="%(asctime)s %(levelname)-10s: %(message)s" +) +logger = logging.getLogger(__name__) +logger.info("Loading .env") +# For manual script execution (bypassing `algokit project deploy`) with a custom .env, +# modify `load_dotenv()` accordingly. For example, `load_dotenv('.env.localnet')`. +load_dotenv() +root_path = Path(__file__).parent + + +def main(action: str) -> None: + artifact_path = root_path / "artifacts" + match action: + case "build": + for contract in contracts: + logger.info(f"Building app at {contract.path}") + build(artifact_path / contract.name, contract.path) + case "deploy": + for contract in contracts: + logger.info(f"Deploying app {contract.name}") + 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 == [".arc32", ".json"] + ), + None, + ) + if app_spec_file_name is None: + raise Exception("Could not deploy app, .arc32.json file not found") + app_spec_path = output_dir / app_spec_file_name + if contract.deploy: + deploy(app_spec_path, contract.deploy) + case "all": + for contract in contracts: + logger.info(f"Building app at {contract.path}") + app_spec_path = build(artifact_path / contract.name, contract.path) + logger.info(f"Deploying {contract.path.name}") + if contract.deploy: + deploy(app_spec_path, contract.deploy) + + +if __name__ == "__main__": + if len(sys.argv) > 1: + main(sys.argv[1]) + else: + main("all") diff --git a/assets/arc-0062/smart_contracts/_helpers/__init__.py b/assets/arc-0062/smart_contracts/_helpers/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/assets/arc-0062/smart_contracts/_helpers/build.py b/assets/arc-0062/smart_contracts/_helpers/build.py new file mode 100644 index 000000000..771b58575 --- /dev/null +++ b/assets/arc-0062/smart_contracts/_helpers/build.py @@ -0,0 +1,74 @@ +import logging +import subprocess +from pathlib import Path +from shutil import rmtree + +logger = logging.getLogger(__name__) +deployment_extension = "py" + + +def _get_output_path(output_dir: Path, deployment_extension: str) -> Path: + 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: + 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", + contract_path.absolute(), + f"--out-dir={output_dir}", + "--output-arc32", + ], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + ) + if build_result.returncode: + raise Exception(f"Could not build contract:\n{build_result.stdout}") + + app_spec_file_names = [file.name for file in output_dir.glob("*.arc32.json")] + + for app_spec_file_name in app_spec_file_names: + if app_spec_file_name is None: + raise Exception( + "Could not generate typed client, .arc32.json file not found" + ) + print(app_spec_file_name) + generate_result = subprocess.run( + [ + "algokit", + "generate", + "client", + output_dir, + "--output", + _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}" + ) + + return output_dir / app_spec_file_name diff --git a/assets/arc-0062/smart_contracts/_helpers/config.py b/assets/arc-0062/smart_contracts/_helpers/config.py new file mode 100644 index 000000000..8f3ca933e --- /dev/null +++ b/assets/arc-0062/smart_contracts/_helpers/config.py @@ -0,0 +1,61 @@ +import dataclasses +import importlib +from collections.abc import Callable +from pathlib import Path + +from algokit_utils import Account, ApplicationSpecification +from algosdk.v2client.algod import AlgodClient +from algosdk.v2client.indexer import IndexerClient + + +@dataclasses.dataclass +class SmartContract: + path: Path + name: str + deploy: ( + Callable[[AlgodClient, IndexerClient, ApplicationSpecification, Account], 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[[AlgodClient, IndexerClient, ApplicationSpecification, Account], None] + | None +): + """Imports the deploy function from a folder if it exists.""" + try: + deploy_module = importlib.import_module( + f"{folder.parent.name}.{folder.name}.deploy_config" + ) + return deploy_module.deploy # type: ignore + except ImportError: + return None + + +def has_contract_file(directory: Path) -> bool: + """Checks whether the directory contains contract.py file.""" + return (directory / "contract.py").exists() + + +# define contracts to build and/or deploy +base_dir = Path("smart_contracts") +contracts = [ + SmartContract( + path=import_contract(folder), + name=folder.name, + deploy=import_deploy_if_exists(folder), + ) + for folder in base_dir.iterdir() + if folder.is_dir() and has_contract_file(folder) +] diff --git a/assets/arc-0062/smart_contracts/_helpers/deploy.py b/assets/arc-0062/smart_contracts/_helpers/deploy.py new file mode 100644 index 000000000..10185a9e4 --- /dev/null +++ b/assets/arc-0062/smart_contracts/_helpers/deploy.py @@ -0,0 +1,53 @@ +# mypy: disable-error-code="no-untyped-call, misc" + + +import logging +from collections.abc import Callable +from pathlib import Path + +from algokit_utils import ( + Account, + ApplicationSpecification, + EnsureBalanceParameters, + ensure_funded, + get_account, + get_algod_client, + get_indexer_client, +) +from algosdk.util import algos_to_microalgos +from algosdk.v2client.algod import AlgodClient +from algosdk.v2client.indexer import IndexerClient + +logger = logging.getLogger(__name__) + + +def deploy( + app_spec_path: Path, + deploy_callback: Callable[ + [AlgodClient, IndexerClient, ApplicationSpecification, Account], None + ], + deployer_initial_funds: int = 2, +) -> None: + # get clients + # by default client configuration is loaded from environment variables + algod_client = get_algod_client() + indexer_client = get_indexer_client() + + # get app spec + app_spec = ApplicationSpecification.from_json(app_spec_path.read_text()) + + # get deployer account by name + deployer = get_account(algod_client, "DEPLOYER", fund_with_algos=0) + + minimum_funds_micro_algos = algos_to_microalgos(deployer_initial_funds) + ensure_funded( + algod_client, + EnsureBalanceParameters( + account_to_fund=deployer, + min_spending_balance_micro_algos=minimum_funds_micro_algos, + min_funding_increment_micro_algos=minimum_funds_micro_algos, + ), + ) + + # use provided callback to deploy the app + deploy_callback(algod_client, indexer_client, app_spec, deployer) 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 new file mode 100644 index 000000000..e025f5893 --- /dev/null +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal @@ -0,0 +1,473 @@ +#pragma version 10 + +smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program: + txn ApplicationID + bnz main_entrypoint@2 + callsub __init__ + +main_entrypoint@2: + // smart_contracts/circulating_supply/contract.py:11 + // class CirculatingSupply(ARC4Contract): + txn NumAppArgs + bz main_bare_routing@9 + method "set_asset(uint64)void" + method "set_not_circulating_address(address,string)void" + method "arc62_get_circulating_supply(uint64)uint64" + txna ApplicationArgs 0 + match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6 + err // reject transaction + +main_set_asset_route@4: + // smart_contracts/circulating_supply/contract.py:21 + // @abimethod() + txn OnCompletion + ! + assert // OnCompletion is NoOp + txn ApplicationID + assert // is not creating + // smart_contracts/circulating_supply/contract.py:11 + // class CirculatingSupply(ARC4Contract): + txna ApplicationArgs 1 + btoi + // smart_contracts/circulating_supply/contract.py:21 + // @abimethod() + callsub set_asset + int 1 + return + +main_set_not_circulating_address_route@5: + // smart_contracts/circulating_supply/contract.py:35 + // @abimethod() + txn OnCompletion + ! + assert // OnCompletion is NoOp + txn ApplicationID + assert // is not creating + // smart_contracts/circulating_supply/contract.py:11 + // class CirculatingSupply(ARC4Contract): + txna ApplicationArgs 1 + txna ApplicationArgs 2 + extract 2 0 + // smart_contracts/circulating_supply/contract.py:35 + // @abimethod() + callsub set_not_circulating_address + int 1 + return + +main_arc62_get_circulating_supply_route@6: + // smart_contracts/circulating_supply/contract.py:59 + // @abimethod(readonly=True) + txn OnCompletion + ! + assert // OnCompletion is NoOp + txn ApplicationID + assert // is not creating + // smart_contracts/circulating_supply/contract.py:11 + // class CirculatingSupply(ARC4Contract): + txna ApplicationArgs 1 + btoi + // smart_contracts/circulating_supply/contract.py:59 + // @abimethod(readonly=True) + callsub arc62_get_circulating_supply + itob + byte 0x151f7c75 + swap + concat + log + int 1 + return + +main_bare_routing@9: + // smart_contracts/circulating_supply/contract.py:11 + // class CirculatingSupply(ARC4Contract): + txn OnCompletion + ! + assert // reject transaction + txn ApplicationID + ! + assert // is creating + int 1 + return + + +// smart_contracts.circulating_supply.contract.CirculatingSupply.set_asset(asset_id: uint64) -> void: +set_asset: + // smart_contracts/circulating_supply/contract.py:21-22 + // @abimethod() + // def set_asset(self, asset_id: UInt64) -> None: + proto 1 0 + // smart_contracts/circulating_supply/contract.py:30-31 + // # Preconditions + // assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED + txn Sender + frame_dig -1 + asset_params_get AssetManager + assert // asset exists + == + bz set_asset_bool_false@3 + int 0 + // smart_contracts/circulating_supply/contract.py:15-16 + // # Global State + // self.asset_id = UInt64() + byte "asset_id" + // smart_contracts/circulating_supply/contract.py:30-31 + // # Preconditions + // assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED + app_global_get_ex + assert // check self.asset_id exists + bnz set_asset_bool_false@3 + int 1 + b set_asset_bool_merge@4 + +set_asset_bool_false@3: + int 0 + +set_asset_bool_merge@4: + // smart_contracts/circulating_supply/contract.py:30-31 + // # Preconditions + // assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED + assert // Unauthorized + // smart_contracts/circulating_supply/contract.py:15-16 + // # Global State + // self.asset_id = UInt64() + byte "asset_id" + // smart_contracts/circulating_supply/contract.py:32-33 + // # Effects + // self.asset_id = asset_id + frame_dig -1 + app_global_put + retsub + + +// smart_contracts.circulating_supply.contract.CirculatingSupply.set_not_circulating_address(address: bytes, label: bytes) -> void: +set_not_circulating_address: + // smart_contracts/circulating_supply/contract.py:35-36 + // @abimethod() + // def set_not_circulating_address(self, address: Address, label: String) -> None: + proto 2 0 + // smart_contracts/circulating_supply/contract.py:44 + // asset = Asset(self.asset_id) + int 0 + // smart_contracts/circulating_supply/contract.py:15-16 + // # Global State + // self.asset_id = UInt64() + byte "asset_id" + // smart_contracts/circulating_supply/contract.py:44 + // asset = Asset(self.asset_id) + app_global_get_ex + assert // check self.asset_id exists + // smart_contracts/circulating_supply/contract.py:45-46 + // # Preconditions + // assert Txn.sender == asset.manager, err.UNAUTHORIZED + txn Sender + swap + dup + asset_params_get AssetManager + assert // asset exists + uncover 2 + == + assert // Unauthorized + // smart_contracts/circulating_supply/contract.py:47 + // assert Account(address.bytes).is_opted_in(asset), err.NOT_OPTED_IN + frame_dig -2 + len + int 32 + == + assert // Address length is 32 bytes + frame_dig -2 + swap + asset_holding_get AssetBalance + bury 1 + assert // Not Opted-In + // smart_contracts/circulating_supply/contract.py:50 + // case cfg.BURNED: + byte "burned" + // smart_contracts/circulating_supply/contract.py:52 + // case cfg.LOCKED: + byte "locked" + // smart_contracts/circulating_supply/contract.py:54 + // case cfg.GENERIC: + byte "generic" + // smart_contracts/circulating_supply/contract.py:48-57 + // # Effects + // match label: + // case cfg.BURNED: + // self.burned = address + // case cfg.LOCKED: + // self.locked = address + // case cfg.GENERIC: + // self.generic = address + // case _: + // assert False, err.INVALID_LABEL + frame_dig -1 + match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3 + // smart_contracts/circulating_supply/contract.py:57 + // assert False, err.INVALID_LABEL + err // Invalid Label + +set_not_circulating_address_switch_case_0@1: + // smart_contracts/circulating_supply/contract.py:17 + // self.burned = Address() + byte "burned" + // smart_contracts/circulating_supply/contract.py:51 + // self.burned = address + frame_dig -2 + app_global_put + b set_not_circulating_address_switch_case_next@5 + +set_not_circulating_address_switch_case_1@2: + // smart_contracts/circulating_supply/contract.py:18 + // self.locked = Address() + byte "locked" + // smart_contracts/circulating_supply/contract.py:53 + // self.locked = address + frame_dig -2 + app_global_put + b set_not_circulating_address_switch_case_next@5 + +set_not_circulating_address_switch_case_2@3: + // smart_contracts/circulating_supply/contract.py:19 + // self.generic = Address() + byte "generic" + // smart_contracts/circulating_supply/contract.py:55 + // self.generic = address + frame_dig -2 + app_global_put + +set_not_circulating_address_switch_case_next@5: + retsub + + +// smart_contracts.circulating_supply.contract.CirculatingSupply.arc62_get_circulating_supply(asset_id: uint64) -> uint64: +arc62_get_circulating_supply: + // smart_contracts/circulating_supply/contract.py:59-60 + // @abimethod(readonly=True) + // def arc62_get_circulating_supply(self, asset_id: UInt64) -> UInt64: + proto 1 1 + byte "" + dupn 2 + // smart_contracts/circulating_supply/contract.py:71 + // burned = Account(self.burned.bytes) + int 0 + // smart_contracts/circulating_supply/contract.py:17 + // self.burned = Address() + byte "burned" + // smart_contracts/circulating_supply/contract.py:71 + // burned = Account(self.burned.bytes) + app_global_get_ex + swap + dup + uncover 2 + assert // check self.burned exists + len + int 32 + == + assert // Address length is 32 bytes + // smart_contracts/circulating_supply/contract.py:72 + // locked = Account(self.locked.bytes) + int 0 + // smart_contracts/circulating_supply/contract.py:18 + // self.locked = Address() + byte "locked" + // smart_contracts/circulating_supply/contract.py:72 + // locked = Account(self.locked.bytes) + app_global_get_ex + swap + dup + uncover 2 + assert // check self.locked exists + len + int 32 + == + assert // Address length is 32 bytes + // smart_contracts/circulating_supply/contract.py:73 + // generic = Account(self.generic.bytes) + int 0 + // smart_contracts/circulating_supply/contract.py:19 + // self.generic = Address() + byte "generic" + // smart_contracts/circulating_supply/contract.py:73 + // generic = Account(self.generic.bytes) + app_global_get_ex + swap + dup + uncover 2 + assert // check self.generic exists + len + int 32 + == + assert // Address length is 32 bytes + // smart_contracts/circulating_supply/contract.py:74-75 + // # Preconditions + // assert asset_id == self.asset_id, err.INVALID_ASSET_ID + int 0 + // smart_contracts/circulating_supply/contract.py:15-16 + // # Global State + // self.asset_id = UInt64() + byte "asset_id" + // smart_contracts/circulating_supply/contract.py:74-75 + // # Preconditions + // assert asset_id == self.asset_id, err.INVALID_ASSET_ID + app_global_get_ex + assert // check self.asset_id exists + frame_dig -1 + == + assert // Invalid ASA ID + // smart_contracts/circulating_supply/contract.py:79 + // if asset.reserve == Global.zero_address + frame_dig -1 + asset_params_get AssetReserve + assert // asset exists + global ZeroAddress + == + // smart_contracts/circulating_supply/contract.py:78-80 + // UInt64(0) + // if asset.reserve == Global.zero_address + // else asset.balance(asset.reserve) + bz arc62_get_circulating_supply_ternary_false@2 + // smart_contracts/circulating_supply/contract.py:78 + // UInt64(0) + int 0 + frame_bury 2 + b arc62_get_circulating_supply_ternary_merge@3 + +arc62_get_circulating_supply_ternary_false@2: + // smart_contracts/circulating_supply/contract.py:80 + // else asset.balance(asset.reserve) + frame_dig -1 + asset_params_get AssetReserve + assert // asset exists + frame_dig -1 + asset_holding_get AssetBalance + assert // account opted into asset + frame_bury 2 + +arc62_get_circulating_supply_ternary_merge@3: + // smart_contracts/circulating_supply/contract.py:83 + // UInt64(0) if burned == Global.zero_address else asset.balance(burned) + frame_dig 3 + global ZeroAddress + == + bz arc62_get_circulating_supply_ternary_false@5 + int 0 + frame_bury 0 + b arc62_get_circulating_supply_ternary_merge@6 + +arc62_get_circulating_supply_ternary_false@5: + // smart_contracts/circulating_supply/contract.py:83 + // UInt64(0) if burned == Global.zero_address else asset.balance(burned) + frame_dig 3 + frame_dig -1 + asset_holding_get AssetBalance + assert // account opted into asset + frame_bury 0 + +arc62_get_circulating_supply_ternary_merge@6: + // smart_contracts/circulating_supply/contract.py:86 + // UInt64(0) if locked == Global.zero_address else asset.balance(locked) + frame_dig 4 + global ZeroAddress + == + bz arc62_get_circulating_supply_ternary_false@8 + int 0 + frame_bury 1 + b arc62_get_circulating_supply_ternary_merge@9 + +arc62_get_circulating_supply_ternary_false@8: + // smart_contracts/circulating_supply/contract.py:86 + // UInt64(0) if locked == Global.zero_address else asset.balance(locked) + frame_dig 4 + frame_dig -1 + asset_holding_get AssetBalance + assert // account opted into asset + frame_bury 1 + +arc62_get_circulating_supply_ternary_merge@9: + // smart_contracts/circulating_supply/contract.py:89 + // UInt64(0) if generic == Global.zero_address else asset.balance(generic) + frame_dig 5 + global ZeroAddress + == + bz arc62_get_circulating_supply_ternary_false@11 + int 0 + b arc62_get_circulating_supply_ternary_merge@12 + +arc62_get_circulating_supply_ternary_false@11: + // smart_contracts/circulating_supply/contract.py:89 + // UInt64(0) if generic == Global.zero_address else asset.balance(generic) + frame_dig 5 + frame_dig -1 + asset_holding_get AssetBalance + assert // account opted into asset + +arc62_get_circulating_supply_ternary_merge@12: + // smart_contracts/circulating_supply/contract.py:92 + // asset.total + frame_dig -1 + asset_params_get AssetTotal + assert // asset exists + // smart_contracts/circulating_supply/contract.py:92-93 + // asset.total + // - reserve_balance + frame_dig 2 + - + // smart_contracts/circulating_supply/contract.py:92-94 + // asset.total + // - reserve_balance + // - burned_balance + frame_dig 0 + - + // smart_contracts/circulating_supply/contract.py:92-95 + // asset.total + // - reserve_balance + // - burned_balance + // - locked_balance + frame_dig 1 + - + // smart_contracts/circulating_supply/contract.py:92-96 + // asset.total + // - reserve_balance + // - burned_balance + // - locked_balance + // - generic_balance + swap + - + // smart_contracts/circulating_supply/contract.py:91-97 + // return ( + // asset.total + // - reserve_balance + // - burned_balance + // - locked_balance + // - generic_balance + // ) + frame_bury 0 + retsub + + +// smart_contracts.circulating_supply.contract.CirculatingSupply.__init__() -> void: +__init__: + // smart_contracts/circulating_supply/contract.py:14 + // def __init__(self) -> None: + proto 0 0 + // smart_contracts/circulating_supply/contract.py:15-16 + // # Global State + // self.asset_id = UInt64() + byte "asset_id" + int 0 + app_global_put + // smart_contracts/circulating_supply/contract.py:17 + // self.burned = Address() + byte "burned" + global ZeroAddress + app_global_put + // smart_contracts/circulating_supply/contract.py:18 + // self.locked = Address() + byte "locked" + global ZeroAddress + app_global_put + // smart_contracts/circulating_supply/contract.py:19 + // self.generic = Address() + byte "generic" + global ZeroAddress + app_global_put + retsub diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json new file mode 100644 index 000000000..ca2fa8a9c --- /dev/null +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json @@ -0,0 +1,119 @@ +{ + "hints": { + "set_asset(uint64)void": { + "call_config": { + "no_op": "CALL" + } + }, + "set_not_circulating_address(address,string)void": { + "call_config": { + "no_op": "CALL" + } + }, + "arc62_get_circulating_supply(uint64)uint64": { + "read_only": true, + "call_config": { + "no_op": "CALL" + } + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzgtODAKICAgIC8vIFVJbnQ2NCgwKQogICAgLy8gaWYgYXNzZXQucmVzZXJ2ZSA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYXNzZXQucmVzZXJ2ZSkKICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA1CiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDgKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDkKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkyCiAgICAvLyBhc3NldC50b3RhbAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VG90YWwKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTMKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTQKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDEKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTYKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTEtOTcKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" + }, + "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" + }, + "burned": { + "type": "bytes", + "key": "burned" + }, + "generic": { + "type": "bytes", + "key": "generic" + }, + "locked": { + "type": "bytes", + "key": "locked" + } + }, + "reserved": {} + }, + "local": { + "declared": {}, + "reserved": {} + } + }, + "contract": { + "name": "CirculatingSupply", + "desc": "ARC-XXXX Reference Implementation", + "methods": [ + { + "name": "set_asset", + "args": [ + { + "type": "uint64", + "name": "asset_id", + "desc": "ASA ID of the circulating supply" + } + ], + "returns": { + "type": "void" + }, + "desc": "Set the ASA ID for the circulating supply - Authorization: ASA Manager Address" + }, + { + "name": "set_not_circulating_address", + "args": [ + { + "type": "address", + "name": "address", + "desc": "Address to assign to the label to" + }, + { + "type": "string", + "name": "label", + "desc": "Label selector (\"burned\", \"locked\", \"generic\")" + } + ], + "returns": { + "type": "void" + }, + "desc": "Set non-circulating supply addresses - Authorization: ASA Manager Address" + }, + { + "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" + }, + "desc": "Get ASA circulating supply" + } + ], + "networks": {} + }, + "bare_call_config": { + "no_op": "CREATE" + } +} \ 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 new file mode 100644 index 000000000..85bce243d --- /dev/null +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.teal @@ -0,0 +1,7 @@ +#pragma version 10 + +smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program: + // smart_contracts/circulating_supply/contract.py:11 + // class CirculatingSupply(ARC4Contract): + int 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 new file mode 100644 index 000000000..2dfb76cff --- /dev/null +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/circulating_supply_client.py @@ -0,0 +1,731 @@ +# flake8: noqa +# fmt: off +# mypy: disable-error-code="no-any-return, no-untyped-call, misc, type-arg" +# This file was automatically generated by algokit-client-generator. +# DO NOT MODIFY IT BY HAND. +# requires: algokit-utils@^1.2.0 +import base64 +import dataclasses +import decimal +import typing +from abc import ABC, abstractmethod + +import algokit_utils +import algosdk +from algosdk.v2client import models +from algosdk.atomic_transaction_composer import ( + AtomicTransactionComposer, + AtomicTransactionResponse, + SimulateAtomicTransactionResponse, + TransactionSigner, + TransactionWithSigner +) + +_APP_SPEC_JSON = r"""{ + "hints": { + "set_asset(uint64)void": { + "call_config": { + "no_op": "CALL" + } + }, + "set_not_circulating_address(address,string)void": { + "call_config": { + "no_op": "CALL" + } + }, + "arc62_get_circulating_supply(uint64)uint64": { + "read_only": true, + "call_config": { + "no_op": "CALL" + } + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzgtODAKICAgIC8vIFVJbnQ2NCgwKQogICAgLy8gaWYgYXNzZXQucmVzZXJ2ZSA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYXNzZXQucmVzZXJ2ZSkKICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA1CiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDgKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDkKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkyCiAgICAvLyBhc3NldC50b3RhbAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VG90YWwKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTMKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTQKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDEKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTYKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTEtOTcKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" + }, + "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" + }, + "burned": { + "type": "bytes", + "key": "burned" + }, + "generic": { + "type": "bytes", + "key": "generic" + }, + "locked": { + "type": "bytes", + "key": "locked" + } + }, + "reserved": {} + }, + "local": { + "declared": {}, + "reserved": {} + } + }, + "contract": { + "name": "CirculatingSupply", + "methods": [ + { + "name": "set_asset", + "args": [ + { + "type": "uint64", + "name": "asset_id", + "desc": "ASA ID of the circulating supply" + } + ], + "returns": { + "type": "void" + }, + "desc": "Set the ASA ID for the circulating supply - Authorization: ASA Manager Address" + }, + { + "name": "set_not_circulating_address", + "args": [ + { + "type": "address", + "name": "address", + "desc": "Address to assign to the label to" + }, + { + "type": "string", + "name": "label", + "desc": "Label selector (\"burned\", \"locked\", \"generic\")" + } + ], + "returns": { + "type": "void" + }, + "desc": "Set non-circulating supply addresses - Authorization: ASA Manager Address" + }, + { + "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" + }, + "desc": "Get ASA circulating supply" + } + ], + "networks": {}, + "desc": "ARC-XXXX Reference Implementation" + }, + "bare_call_config": { + "no_op": "CREATE" + } +}""" +APP_SPEC = algokit_utils.ApplicationSpecification.from_json(_APP_SPEC_JSON) +_TReturn = typing.TypeVar("_TReturn") + + +class _ArgsBase(ABC, typing.Generic[_TReturn]): + @staticmethod + @abstractmethod + def method() -> str: + ... + + +_TArgs = typing.TypeVar("_TArgs", bound=_ArgsBase[typing.Any]) + + +@dataclasses.dataclass(kw_only=True) +class _TArgsHolder(typing.Generic[_TArgs]): + args: _TArgs + + +def _filter_none(value: dict | typing.Any) -> dict | typing.Any: + if isinstance(value, dict): + return {k: _filter_none(v) for k, v in value.items() if v is not None} + return value + + +def _as_dict(data: typing.Any, *, convert_all: bool = True) -> dict[str, typing.Any]: + if data is None: + return {} + if not dataclasses.is_dataclass(data): + raise TypeError(f"{data} must be a dataclass") + if convert_all: + result = dataclasses.asdict(data) + else: + result = {f.name: getattr(data, f.name) for f in dataclasses.fields(data)} + return _filter_none(result) + + +def _convert_transaction_parameters( + transaction_parameters: algokit_utils.TransactionParameters | None, +) -> algokit_utils.TransactionParametersDict: + return typing.cast(algokit_utils.TransactionParametersDict, _as_dict(transaction_parameters)) + + +def _convert_call_transaction_parameters( + transaction_parameters: algokit_utils.TransactionParameters | None, +) -> algokit_utils.OnCompleteCallParametersDict: + return typing.cast(algokit_utils.OnCompleteCallParametersDict, _as_dict(transaction_parameters)) + + +def _convert_create_transaction_parameters( + transaction_parameters: algokit_utils.TransactionParameters | None, + on_complete: algokit_utils.OnCompleteActionName, +) -> algokit_utils.CreateCallParametersDict: + result = typing.cast(algokit_utils.CreateCallParametersDict, _as_dict(transaction_parameters)) + on_complete_enum = on_complete.replace("_", " ").title().replace(" ", "") + "OC" + result["on_complete"] = getattr(algosdk.transaction.OnComplete, on_complete_enum) + return result + + +def _convert_deploy_args( + deploy_args: algokit_utils.DeployCallArgs | None, +) -> algokit_utils.ABICreateCallArgsDict | None: + if deploy_args is None: + return None + + deploy_args_dict = typing.cast(algokit_utils.ABICreateCallArgsDict, _as_dict(deploy_args)) + if isinstance(deploy_args, _TArgsHolder): + deploy_args_dict["args"] = _as_dict(deploy_args.args) + deploy_args_dict["method"] = deploy_args.args.method() + + return deploy_args_dict + + +@dataclasses.dataclass(kw_only=True) +class SetAssetArgs(_ArgsBase[None]): + """Set the ASA ID for the circulating supply - Authorization: ASA Manager Address""" + + asset_id: int + """ASA ID of the circulating supply""" + + @staticmethod + def method() -> str: + return "set_asset(uint64)void" + + +@dataclasses.dataclass(kw_only=True) +class SetNotCirculatingAddressArgs(_ArgsBase[None]): + """Set non-circulating supply addresses - Authorization: ASA Manager Address""" + + address: str + """Address to assign to the label to""" + label: str + """Label selector ("burned", "locked", "generic")""" + + @staticmethod + def method() -> str: + return "set_not_circulating_address(address,string)void" + + +@dataclasses.dataclass(kw_only=True) +class Arc62GetCirculatingSupplyArgs(_ArgsBase[int]): + """Get ASA circulating supply""" + + asset_id: int + """ASA ID of the circulating supply""" + + @staticmethod + def method() -> str: + return "arc62_get_circulating_supply(uint64)uint64" + + +class ByteReader: + def __init__(self, data: bytes): + self._data = data + + @property + def as_bytes(self) -> bytes: + return self._data + + @property + def as_str(self) -> str: + return self._data.decode("utf8") + + @property + def as_base64(self) -> str: + return base64.b64encode(self._data).decode("utf8") + + @property + def as_hex(self) -> str: + return self._data.hex() + + +class GlobalState: + def __init__(self, data: dict[bytes, bytes | int]): + self.asset_id = typing.cast(int, data.get(b"asset_id")) + self.burned = ByteReader(typing.cast(bytes, data.get(b"burned"))) + self.generic = ByteReader(typing.cast(bytes, data.get(b"generic"))) + self.locked = ByteReader(typing.cast(bytes, data.get(b"locked"))) + + +@dataclasses.dataclass(kw_only=True) +class SimulateOptions: + allow_more_logs: bool = dataclasses.field(default=False) + allow_empty_signatures: bool = dataclasses.field(default=False) + extra_opcode_budget: int = dataclasses.field(default=0) + exec_trace_config: models.SimulateTraceConfig | None = dataclasses.field(default=None) + + +class Composer: + + def __init__(self, app_client: algokit_utils.ApplicationClient, atc: AtomicTransactionComposer): + self.app_client = app_client + self.atc = atc + + def build(self) -> AtomicTransactionComposer: + return self.atc + + def simulate(self, options: SimulateOptions | None = None) -> SimulateAtomicTransactionResponse: + request = models.SimulateRequest( + allow_more_logs=options.allow_more_logs, + allow_empty_signatures=options.allow_empty_signatures, + extra_opcode_budget=options.extra_opcode_budget, + exec_trace_config=options.exec_trace_config, + txn_groups=[] + ) if options else None + result = self.atc.simulate(self.app_client.algod_client, request) + return result + + def execute(self) -> AtomicTransactionResponse: + return self.app_client.execute_atc(self.atc) + + def set_asset( + self, + *, + asset_id: int, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + ) -> "Composer": + """Set the ASA ID for the circulating supply - Authorization: ASA Manager Address + + Adds a call to `set_asset(uint64)void` ABI method + + :param int asset_id: ASA ID of the circulating supply + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns Composer: This Composer instance""" + + args = SetAssetArgs( + asset_id=asset_id, + ) + self.app_client.compose_call( + self.atc, + call_abi_method=args.method(), + transaction_parameters=_convert_call_transaction_parameters(transaction_parameters), + **_as_dict(args, convert_all=True), + ) + return self + + def set_not_circulating_address( + self, + *, + address: str, + label: str, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + ) -> "Composer": + """Set non-circulating supply addresses - Authorization: ASA Manager Address + + Adds a call to `set_not_circulating_address(address,string)void` ABI method + + :param str address: Address to assign to the label to + :param str label: Label selector ("burned", "locked", "generic") + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns Composer: This Composer instance""" + + args = SetNotCirculatingAddressArgs( + address=address, + label=label, + ) + self.app_client.compose_call( + self.atc, + call_abi_method=args.method(), + transaction_parameters=_convert_call_transaction_parameters(transaction_parameters), + **_as_dict(args, convert_all=True), + ) + return self + + def arc62_get_circulating_supply( + self, + *, + asset_id: int, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + ) -> "Composer": + """Get ASA circulating supply + + Adds a call to `arc62_get_circulating_supply(uint64)uint64` ABI method + + :param int asset_id: ASA ID of the circulating supply + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns Composer: This Composer instance""" + + args = Arc62GetCirculatingSupplyArgs( + asset_id=asset_id, + ) + self.app_client.compose_call( + self.atc, + call_abi_method=args.method(), + transaction_parameters=_convert_call_transaction_parameters(transaction_parameters), + **_as_dict(args, convert_all=True), + ) + return self + + def create_bare( + self, + *, + on_complete: typing.Literal["no_op"] = "no_op", + transaction_parameters: algokit_utils.CreateTransactionParameters | None = None, + ) -> "Composer": + """Adds a call to create an application using the no_op bare method + + :param typing.Literal[no_op] on_complete: On completion type to use + :param algokit_utils.CreateTransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns Composer: This Composer instance""" + + self.app_client.compose_create( + self.atc, + call_abi_method=False, + transaction_parameters=_convert_create_transaction_parameters(transaction_parameters, on_complete), + ) + return self + + def clear_state( + self, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + app_args: list[bytes] | None = None, + ) -> "Composer": + """Adds a call to the application with on completion set to ClearState + + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :param list[bytes] | None app_args: (optional) Application args to pass""" + + self.app_client.compose_clear_state(self.atc, _convert_transaction_parameters(transaction_parameters), app_args) + return self + + +class CirculatingSupplyClient: + """ARC-XXXX Reference Implementation + + A class for interacting with the CirculatingSupply app providing high productivity and + strongly typed methods to deploy and call the app""" + + @typing.overload + def __init__( + self, + algod_client: algosdk.v2client.algod.AlgodClient, + *, + app_id: int = 0, + signer: TransactionSigner | algokit_utils.Account | None = None, + sender: str | None = None, + suggested_params: algosdk.transaction.SuggestedParams | None = None, + template_values: algokit_utils.TemplateValueMapping | None = None, + app_name: str | None = None, + ) -> None: + ... + + @typing.overload + def __init__( + self, + algod_client: algosdk.v2client.algod.AlgodClient, + *, + creator: str | algokit_utils.Account, + indexer_client: algosdk.v2client.indexer.IndexerClient | None = None, + existing_deployments: algokit_utils.AppLookup | None = None, + signer: TransactionSigner | algokit_utils.Account | None = None, + sender: str | None = None, + suggested_params: algosdk.transaction.SuggestedParams | None = None, + template_values: algokit_utils.TemplateValueMapping | None = None, + app_name: str | None = None, + ) -> None: + ... + + def __init__( + self, + algod_client: algosdk.v2client.algod.AlgodClient, + *, + creator: str | algokit_utils.Account | None = None, + indexer_client: algosdk.v2client.indexer.IndexerClient | None = None, + existing_deployments: algokit_utils.AppLookup | None = None, + app_id: int = 0, + signer: TransactionSigner | algokit_utils.Account | None = None, + sender: str | None = None, + suggested_params: algosdk.transaction.SuggestedParams | None = None, + template_values: algokit_utils.TemplateValueMapping | None = None, + app_name: str | None = None, + ) -> None: + """ + CirculatingSupplyClient can be created with an app_id to interact with an existing application, alternatively + it can be created with a creator and indexer_client specified to find existing applications by name and creator. + + :param AlgodClient algod_client: AlgoSDK algod client + :param int app_id: The app_id of an existing application, to instead find the application by creator and name + use the creator and indexer_client parameters + :param str | Account creator: The address or Account of the app creator to resolve the app_id + :param IndexerClient indexer_client: AlgoSDK indexer client, only required if deploying or finding app_id by + creator and app name + :param AppLookup existing_deployments: + :param TransactionSigner | Account signer: Account or signer to use to sign transactions, if not specified and + creator was passed as an Account will use that. + :param str sender: Address to use as the sender for all transactions, will use the address associated with the + signer if not specified. + :param TemplateValueMapping template_values: Values to use for TMPL_* template variables, dictionary keys should + *NOT* include the TMPL_ prefix + :param str | None app_name: Name of application to use when deploying, defaults to name defined on the + Application Specification + """ + + self.app_spec = APP_SPEC + + # calling full __init__ signature, so ignoring mypy warning about overloads + self.app_client = algokit_utils.ApplicationClient( # type: ignore[call-overload, misc] + algod_client=algod_client, + app_spec=self.app_spec, + app_id=app_id, + creator=creator, + indexer_client=indexer_client, + existing_deployments=existing_deployments, + signer=signer, + sender=sender, + suggested_params=suggested_params, + template_values=template_values, + app_name=app_name, + ) + + @property + def algod_client(self) -> algosdk.v2client.algod.AlgodClient: + return self.app_client.algod_client + + @property + def app_id(self) -> int: + return self.app_client.app_id + + @app_id.setter + def app_id(self, value: int) -> None: + self.app_client.app_id = value + + @property + def app_address(self) -> str: + return self.app_client.app_address + + @property + def sender(self) -> str | None: + return self.app_client.sender + + @sender.setter + def sender(self, value: str) -> None: + self.app_client.sender = value + + @property + def signer(self) -> TransactionSigner | None: + return self.app_client.signer + + @signer.setter + def signer(self, value: TransactionSigner) -> None: + self.app_client.signer = value + + @property + def suggested_params(self) -> algosdk.transaction.SuggestedParams | None: + return self.app_client.suggested_params + + @suggested_params.setter + def suggested_params(self, value: algosdk.transaction.SuggestedParams | None) -> None: + self.app_client.suggested_params = value + + def get_global_state(self) -> GlobalState: + """Returns the application's global state wrapped in a strongly typed class with options to format the stored value""" + + state = typing.cast(dict[bytes, bytes | int], self.app_client.get_global_state(raw=True)) + return GlobalState(state) + + def set_asset( + self, + *, + asset_id: int, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + ) -> algokit_utils.ABITransactionResponse[None]: + """Set the ASA ID for the circulating supply - Authorization: ASA Manager Address + + Calls `set_asset(uint64)void` ABI method + + :param int asset_id: ASA ID of the circulating supply + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns algokit_utils.ABITransactionResponse[None]: The result of the transaction""" + + args = SetAssetArgs( + asset_id=asset_id, + ) + result = self.app_client.call( + call_abi_method=args.method(), + transaction_parameters=_convert_call_transaction_parameters(transaction_parameters), + **_as_dict(args, convert_all=True), + ) + return result + + def set_not_circulating_address( + self, + *, + address: str, + label: str, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + ) -> algokit_utils.ABITransactionResponse[None]: + """Set non-circulating supply addresses - Authorization: ASA Manager Address + + Calls `set_not_circulating_address(address,string)void` ABI method + + :param str address: Address to assign to the label to + :param str label: Label selector ("burned", "locked", "generic") + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns algokit_utils.ABITransactionResponse[None]: The result of the transaction""" + + args = SetNotCirculatingAddressArgs( + address=address, + label=label, + ) + result = self.app_client.call( + call_abi_method=args.method(), + transaction_parameters=_convert_call_transaction_parameters(transaction_parameters), + **_as_dict(args, convert_all=True), + ) + return result + + def arc62_get_circulating_supply( + self, + *, + asset_id: int, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + ) -> algokit_utils.ABITransactionResponse[int]: + """Get ASA circulating supply + + Calls `arc62_get_circulating_supply(uint64)uint64` ABI method + + :param int asset_id: ASA ID of the circulating supply + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns algokit_utils.ABITransactionResponse[int]: ASA circulating supply""" + + args = Arc62GetCirculatingSupplyArgs( + asset_id=asset_id, + ) + result = self.app_client.call( + call_abi_method=args.method(), + transaction_parameters=_convert_call_transaction_parameters(transaction_parameters), + **_as_dict(args, convert_all=True), + ) + return result + + def create_bare( + self, + *, + on_complete: typing.Literal["no_op"] = "no_op", + transaction_parameters: algokit_utils.CreateTransactionParameters | None = None, + ) -> algokit_utils.TransactionResponse: + """Creates an application using the no_op bare method + + :param typing.Literal[no_op] on_complete: On completion type to use + :param algokit_utils.CreateTransactionParameters transaction_parameters: (optional) Additional transaction parameters + :returns algokit_utils.TransactionResponse: The result of the transaction""" + + result = self.app_client.create( + call_abi_method=False, + transaction_parameters=_convert_create_transaction_parameters(transaction_parameters, on_complete), + ) + return result + + def clear_state( + self, + transaction_parameters: algokit_utils.TransactionParameters | None = None, + app_args: list[bytes] | None = None, + ) -> algokit_utils.TransactionResponse: + """Calls the application with on completion set to ClearState + + :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters + :param list[bytes] | None app_args: (optional) Application args to pass + :returns algokit_utils.TransactionResponse: The result of the transaction""" + + return self.app_client.clear_state(_convert_transaction_parameters(transaction_parameters), app_args) + + def deploy( + self, + version: str | None = None, + *, + signer: TransactionSigner | None = None, + sender: str | None = None, + allow_update: bool | None = None, + allow_delete: bool | None = None, + on_update: algokit_utils.OnUpdate = algokit_utils.OnUpdate.Fail, + on_schema_break: algokit_utils.OnSchemaBreak = algokit_utils.OnSchemaBreak.Fail, + template_values: algokit_utils.TemplateValueMapping | None = None, + create_args: algokit_utils.DeployCallArgs | None = None, + update_args: algokit_utils.DeployCallArgs | None = None, + delete_args: algokit_utils.DeployCallArgs | None = None, + ) -> algokit_utils.DeployResponse: + """Deploy an application and update client to reference it. + + Idempotently deploy (create, update/delete if changed) an app against the given name via the given creator + account, including deploy-time template placeholder substitutions. + To understand the architecture decisions behind this functionality please see + + + ```{note} + If there is a breaking state schema change to an existing app (and `on_schema_break` is set to + 'ReplaceApp' the existing app will be deleted and re-created. + ``` + + ```{note} + If there is an update (different TEAL code) to an existing app (and `on_update` is set to 'ReplaceApp') + the existing app will be deleted and re-created. + ``` + + :param str version: version to use when creating or updating app, if None version will be auto incremented + :param algosdk.atomic_transaction_composer.TransactionSigner signer: signer to use when deploying app + , if None uses self.signer + :param str sender: sender address to use when deploying app, if None uses self.sender + :param bool allow_delete: Used to set the `TMPL_DELETABLE` template variable to conditionally control if an app + can be deleted + :param bool allow_update: Used to set the `TMPL_UPDATABLE` template variable to conditionally control if an app + can be updated + :param OnUpdate on_update: Determines what action to take if an application update is required + :param OnSchemaBreak on_schema_break: Determines what action to take if an application schema requirements + has increased beyond the current allocation + :param dict[str, int|str|bytes] template_values: Values to use for `TMPL_*` template variables, dictionary keys + should *NOT* include the TMPL_ prefix + :param algokit_utils.DeployCallArgs | None create_args: Arguments used when creating an application + :param algokit_utils.DeployCallArgs | None update_args: Arguments used when updating an application + :param algokit_utils.DeployCallArgs | None delete_args: Arguments used when deleting an application + :return DeployResponse: details action taken and relevant transactions + :raises DeploymentError: If the deployment failed""" + + return self.app_client.deploy( + version, + signer=signer, + sender=sender, + allow_update=allow_update, + allow_delete=allow_delete, + on_update=on_update, + on_schema_break=on_schema_break, + template_values=template_values, + create_args=_convert_deploy_args(create_args), + update_args=_convert_deploy_args(update_args), + delete_args=_convert_deploy_args(delete_args), + ) + + def compose(self, atc: AtomicTransactionComposer | None = None) -> Composer: + return Composer(self.app_client, atc or AtomicTransactionComposer()) diff --git a/assets/arc-0062/smart_contracts/circulating_supply/config.py b/assets/arc-0062/smart_contracts/circulating_supply/config.py new file mode 100644 index 000000000..f407fdb1c --- /dev/null +++ b/assets/arc-0062/smart_contracts/circulating_supply/config.py @@ -0,0 +1,6 @@ +from typing import Final + +# Roles +BURNED: Final[str] = "burned" +LOCKED: Final[str] = "locked" +GENERIC: Final[str] = "generic" diff --git a/assets/arc-0062/smart_contracts/circulating_supply/contract.py b/assets/arc-0062/smart_contracts/circulating_supply/contract.py new file mode 100644 index 000000000..b9d14a1fa --- /dev/null +++ b/assets/arc-0062/smart_contracts/circulating_supply/contract.py @@ -0,0 +1,97 @@ +# ruff: noqa: B011 + +from algopy import Account, ARC4Contract, Asset, Global, 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-XXXX Reference Implementation""" + + def __init__(self) -> None: + # Global State + self.asset_id = UInt64() + self.burned = Address() + self.locked = Address() + self.generic = Address() + + @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: Label selector ("burned", "locked", "generic") + """ + 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.BURNED: + self.burned = address + case cfg.LOCKED: + self.locked = address + case cfg.GENERIC: + self.generic = 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) + burned = Account(self.burned.bytes) + locked = Account(self.locked.bytes) + generic = Account(self.generic.bytes) + # Preconditions + assert asset_id == self.asset_id, err.INVALID_ASSET_ID + # Effects + reserve_balance = ( + UInt64(0) + if asset.reserve == Global.zero_address + else asset.balance(asset.reserve) + ) + burned_balance = ( + UInt64(0) if burned == Global.zero_address else asset.balance(burned) + ) + locked_balance = ( + UInt64(0) if locked == Global.zero_address else asset.balance(locked) + ) + generic_balance = ( + UInt64(0) if generic == Global.zero_address else asset.balance(generic) + ) + return ( + asset.total + - reserve_balance + - burned_balance + - locked_balance + - generic_balance + ) diff --git a/assets/arc-0062/smart_contracts/circulating_supply/deploy_config.py b/assets/arc-0062/smart_contracts/circulating_supply/deploy_config.py new file mode 100644 index 000000000..753c6e3a6 --- /dev/null +++ b/assets/arc-0062/smart_contracts/circulating_supply/deploy_config.py @@ -0,0 +1,30 @@ +import logging + +import algokit_utils +from algosdk.v2client.algod import AlgodClient +from algosdk.v2client.indexer import IndexerClient + +logger = logging.getLogger(__name__) + + +# define deployment behaviour based on supplied app spec +def deploy( + algod_client: AlgodClient, + indexer_client: IndexerClient, + app_spec: algokit_utils.ApplicationSpecification, + deployer: algokit_utils.Account, +) -> None: + from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( + CirculatingSupplyClient, + ) + + app_client = CirculatingSupplyClient( + algod_client, + creator=deployer, + indexer_client=indexer_client, + ) + + app_client.deploy( + on_schema_break=algokit_utils.OnSchemaBreak.AppendApp, + on_update=algokit_utils.OnUpdate.AppendApp, + ) diff --git a/assets/arc-0062/smart_contracts/errors/__init__.py b/assets/arc-0062/smart_contracts/errors/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/assets/arc-0062/smart_contracts/errors/std_errors.py b/assets/arc-0062/smart_contracts/errors/std_errors.py new file mode 100644 index 000000000..d68e92de1 --- /dev/null +++ b/assets/arc-0062/smart_contracts/errors/std_errors.py @@ -0,0 +1,10 @@ +# Errors +WRONG_GLOBAL_BYTES = "Wrong Global Bytes allocation" +WRONG_GLOBAL_UINTS = "Wrong Global UInts allocation" +WRONG_LOCAL_BYTES = "Wrong Local Bytes allocation" +WRONG_LOCAL_UINTS = "Wrong Local UInts allocation" + +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 new file mode 100644 index 000000000..e69de29bb diff --git a/assets/arc-0062/tests/conftest.py b/assets/arc-0062/tests/conftest.py new file mode 100644 index 000000000..06293b609 --- /dev/null +++ b/assets/arc-0062/tests/conftest.py @@ -0,0 +1,329 @@ +import pytest +from algokit_utils import ( + EnsureBalanceParameters, + OnCompleteCallParameters, + ensure_funded, + get_algod_client, + get_default_localnet_config, + get_indexer_client, +) +from algokit_utils.beta.account_manager import AddressAndSigner +from algokit_utils.beta.algorand_client import ( + AlgorandClient, + AssetCreateParams, + AssetOptInParams, + AssetTransferParams, +) +from algokit_utils.config import config +from algosdk.v2client.algod import AlgodClient +from algosdk.v2client.indexer import IndexerClient + +from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( + CirculatingSupplyClient, +) + +INITIAL_FUNDS = 100_000_000 +ASA_TOTAL = 1000 +RESERVE_BALANCE = 420 +BURNED_BALANCE = 69 +LOCKED_BALANCE = 42 +GENERIC_BALANCE = 4 + + +def get_asset_balance( + algorand_client: AlgorandClient, address: str, asset_id: int +) -> int: + asset_balance: int = algorand_client.account.get_asset_information( # type: ignore + sender=address, asset_id=asset_id + )["asset-holding"]["amount"] + return asset_balance + + +@pytest.fixture(scope="session") +def algod_client() -> AlgodClient: + # by default we are using localnet algod + client = get_algod_client(get_default_localnet_config("algod")) + return client + + +@pytest.fixture(scope="session") +def indexer_client() -> IndexerClient: + return get_indexer_client(get_default_localnet_config("indexer")) + + +@pytest.fixture(scope="session") +def algorand_client() -> AlgorandClient: + client = AlgorandClient.default_local_net() + client.set_suggested_params_timeout(0) + return client + + +@pytest.fixture(scope="session") +def deployer(algorand_client: AlgorandClient) -> AddressAndSigner: + acct = algorand_client.account.random() + + ensure_funded( + algorand_client.client.algod, + EnsureBalanceParameters( + account_to_fund=acct.address, + min_spending_balance_micro_algos=INITIAL_FUNDS, + ), + ) + return acct + + +@pytest.fixture(scope="function") +def circulating_supply_client( + algod_client: AlgodClient, indexer_client: IndexerClient, deployer: AddressAndSigner +) -> CirculatingSupplyClient: + config.configure(debug=True) + + client = CirculatingSupplyClient( + algod_client=algod_client, + indexer_client=indexer_client, + creator=deployer.address, + signer=deployer.signer, + ) + client.create_bare() + return client + + +@pytest.fixture(scope="session") +def asset_creator(algorand_client: AlgorandClient) -> AddressAndSigner: + acct = algorand_client.account.random() + + ensure_funded( + algorand_client.client.algod, + EnsureBalanceParameters( + account_to_fund=acct.address, + min_spending_balance_micro_algos=INITIAL_FUNDS, + ), + ) + return acct + + +@pytest.fixture(scope="session") +def asset_manager(algorand_client: AlgorandClient) -> AddressAndSigner: + acct = algorand_client.account.random() + + ensure_funded( + algorand_client.client.algod, + EnsureBalanceParameters( + account_to_fund=acct.address, + min_spending_balance_micro_algos=INITIAL_FUNDS, + ), + ) + return acct + + +@pytest.fixture(scope="session") +def asset_reserve(algorand_client: AlgorandClient) -> AddressAndSigner: + acct = algorand_client.account.random() + + ensure_funded( + algorand_client.client.algod, + EnsureBalanceParameters( + account_to_fund=acct.address, + min_spending_balance_micro_algos=INITIAL_FUNDS, + ), + ) + return acct + + +@pytest.fixture(scope="session") +def asset_burning(algorand_client: AlgorandClient) -> AddressAndSigner: + acct = algorand_client.account.random() + + ensure_funded( + algorand_client.client.algod, + EnsureBalanceParameters( + account_to_fund=acct.address, + min_spending_balance_micro_algos=INITIAL_FUNDS, + ), + ) + return acct + + +@pytest.fixture(scope="session") +def asset_locking(algorand_client: AlgorandClient) -> AddressAndSigner: + acct = algorand_client.account.random() + + ensure_funded( + algorand_client.client.algod, + EnsureBalanceParameters( + account_to_fund=acct.address, + min_spending_balance_micro_algos=INITIAL_FUNDS, + ), + ) + return acct + + +@pytest.fixture(scope="session") +def asset_generic_not_circulating(algorand_client: AlgorandClient) -> AddressAndSigner: + acct = algorand_client.account.random() + + ensure_funded( + algorand_client.client.algod, + EnsureBalanceParameters( + account_to_fund=acct.address, + min_spending_balance_micro_algos=INITIAL_FUNDS, + ), + ) + return acct + + +@pytest.fixture(scope="function") +def asset( + algorand_client: AlgorandClient, + asset_creator: AddressAndSigner, + asset_manager: AddressAndSigner, + asset_reserve: AddressAndSigner, +) -> int: + txn_result = algorand_client.send.asset_create( # type: ignore + AssetCreateParams( + sender=asset_creator.address, + signer=asset_creator.signer, + total=ASA_TOTAL, + manager=asset_manager.address, + reserve=asset_reserve.address, + ) + ) + return txn_result["confirmation"]["asset-index"] # type: ignore + + +@pytest.fixture(scope="function") +def reserve_with_balance( + algorand_client: AlgorandClient, + asset_creator: AddressAndSigner, + asset_reserve: AddressAndSigner, + asset: int, +) -> AddressAndSigner: + algorand_client.send.asset_opt_in( + AssetOptInParams( + sender=asset_reserve.address, + signer=asset_reserve.signer, + asset_id=asset, + ) + ) + algorand_client.send.asset_transfer( + AssetTransferParams( + sender=asset_creator.address, + signer=asset_creator.signer, + asset_id=asset, + amount=RESERVE_BALANCE, + receiver=asset_reserve.address, + ) + ) + assert ( + get_asset_balance(algorand_client, asset_reserve.address, asset) + == RESERVE_BALANCE + ) + return asset_reserve + + +@pytest.fixture(scope="function") +def burning_with_balance( + algorand_client: AlgorandClient, + asset_creator: AddressAndSigner, + asset_burning: AddressAndSigner, + asset: int, +) -> AddressAndSigner: + algorand_client.send.asset_opt_in( + AssetOptInParams( + sender=asset_burning.address, + signer=asset_burning.signer, + asset_id=asset, + ) + ) + algorand_client.send.asset_transfer( + AssetTransferParams( + sender=asset_creator.address, + signer=asset_creator.signer, + asset_id=asset, + amount=BURNED_BALANCE, + receiver=asset_burning.address, + ) + ) + assert ( + get_asset_balance(algorand_client, asset_burning.address, asset) + == BURNED_BALANCE + ) + return asset_burning + + +@pytest.fixture(scope="function") +def locking_with_balance( + algorand_client: AlgorandClient, + asset_creator: AddressAndSigner, + asset_locking: AddressAndSigner, + asset: int, +) -> AddressAndSigner: + algorand_client.send.asset_opt_in( + AssetOptInParams( + sender=asset_locking.address, + signer=asset_locking.signer, + asset_id=asset, + ) + ) + algorand_client.send.asset_transfer( + AssetTransferParams( + sender=asset_creator.address, + signer=asset_creator.signer, + asset_id=asset, + amount=LOCKED_BALANCE, + receiver=asset_locking.address, + ) + ) + assert ( + get_asset_balance(algorand_client, asset_locking.address, asset) + == LOCKED_BALANCE + ) + return asset_locking + + +@pytest.fixture(scope="function") +def generic_not_circulating_with_balance( + algorand_client: AlgorandClient, + asset_creator: AddressAndSigner, + asset_generic_not_circulating: AddressAndSigner, + asset: int, +) -> AddressAndSigner: + algorand_client.send.asset_opt_in( + AssetOptInParams( + sender=asset_generic_not_circulating.address, + signer=asset_generic_not_circulating.signer, + asset_id=asset, + ) + ) + algorand_client.send.asset_transfer( + AssetTransferParams( + sender=asset_creator.address, + signer=asset_creator.signer, + asset_id=asset, + amount=GENERIC_BALANCE, + receiver=asset_generic_not_circulating.address, + ) + ) + assert ( + get_asset_balance(algorand_client, asset_generic_not_circulating.address, asset) + == GENERIC_BALANCE + ) + return asset_generic_not_circulating + + +@pytest.fixture(scope="function") +def asset_circulating_supply_client( + circulating_supply_client: CirculatingSupplyClient, + asset_manager: AddressAndSigner, + asset: int, +) -> CirculatingSupplyClient: + circulating_supply_client.set_asset( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + ), + ) + return circulating_supply_client diff --git a/assets/arc-0062/tests/test_deploy.py b/assets/arc-0062/tests/test_deploy.py new file mode 100644 index 000000000..c9e843473 --- /dev/null +++ b/assets/arc-0062/tests/test_deploy.py @@ -0,0 +1,15 @@ +from algosdk.constants import ZERO_ADDRESS +from algosdk.encoding import encode_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.get_global_state() + + assert state.asset_id == 0 + assert encode_address(state.burned.as_bytes) == ZERO_ADDRESS # type: ignore + assert encode_address(state.locked.as_bytes) == ZERO_ADDRESS # type: ignore + assert encode_address(state.generic.as_bytes) == ZERO_ADDRESS # type: ignore diff --git a/assets/arc-0062/tests/test_get_circulating_supply.py b/assets/arc-0062/tests/test_get_circulating_supply.py new file mode 100644 index 000000000..5215f1d52 --- /dev/null +++ b/assets/arc-0062/tests/test_get_circulating_supply.py @@ -0,0 +1,153 @@ +from algokit_utils import OnCompleteCallParameters +from algokit_utils.beta.account_manager import AddressAndSigner +from algokit_utils.beta.algorand_client import AlgorandClient, AssetConfigParams + +from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( + CirculatingSupplyClient, +) +from smart_contracts.circulating_supply import config as cfg + +from .conftest import get_asset_balance + + +def test_pass_get_circulating_supply( + algorand_client: AlgorandClient, + asset_circulating_supply_client: CirculatingSupplyClient, + asset_manager: AddressAndSigner, + asset: int, + reserve_with_balance: AddressAndSigner, + burning_with_balance: AddressAndSigner, + locking_with_balance: AddressAndSigner, + generic_not_circulating_with_balance: AddressAndSigner, +) -> None: + total: int = algorand_client.client.algod.asset_info(asset)["params"]["total"] # type: ignore + reserve_balance: int = get_asset_balance( + algorand_client, reserve_with_balance.address, asset + ) + burned_balance: int = get_asset_balance( + algorand_client, burning_with_balance.address, asset + ) + locked_balance: int = get_asset_balance( + algorand_client, locking_with_balance.address, asset + ) + generic_balance: int = get_asset_balance( + algorand_client, generic_not_circulating_with_balance.address, asset + ) + + print("\nASA Total: ", total) + print("Reserve Balance: ", reserve_balance) + print("Burned Balance: ", burned_balance) + print("Locked Balance: ", locked_balance) + print("Generic Not-Circulating Balance: ", generic_balance) + + not_circulating_addresses = [ + reserve_with_balance.address, + burning_with_balance.address, + locking_with_balance.address, + generic_not_circulating_with_balance.address, + ] + + circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[reserve_with_balance.address], + ), + ).return_value + assert circulating_supply == total - reserve_balance + + asset_circulating_supply_client.set_not_circulating_address( + address=burning_with_balance.address, + label=cfg.BURNED, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[burning_with_balance.address], + ), + ) + circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=not_circulating_addresses, + ), + ).return_value + assert circulating_supply == total - reserve_balance - burned_balance + + asset_circulating_supply_client.set_not_circulating_address( + address=locking_with_balance.address, + label=cfg.LOCKED, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[locking_with_balance.address], + ), + ) + circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=not_circulating_addresses, + ), + ).return_value + assert ( + circulating_supply == total - reserve_balance - burned_balance - locked_balance + ) + + asset_circulating_supply_client.set_not_circulating_address( + address=generic_not_circulating_with_balance.address, + label=cfg.GENERIC, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[generic_not_circulating_with_balance.address], + ), + ) + circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=not_circulating_addresses, + ), + ).return_value + assert ( + circulating_supply + == total - reserve_balance - burned_balance - locked_balance - generic_balance + ) + print("Circulating Supply: ", circulating_supply) + + +def test_pass_no_reserve( + algorand_client: AlgorandClient, + asset_circulating_supply_client: CirculatingSupplyClient, + asset_manager: AddressAndSigner, + asset: int, +) -> None: + total: int = algorand_client.client.algod.asset_info(asset)["params"]["total"] # type: ignore + algorand_client.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.arc62_get_circulating_supply( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + ), + ).return_value + assert circulating_supply == total diff --git a/assets/arc-0062/tests/test_set_asset.py b/assets/arc-0062/tests/test_set_asset.py new file mode 100644 index 000000000..5be76e59b --- /dev/null +++ b/assets/arc-0062/tests/test_set_asset.py @@ -0,0 +1,33 @@ +import pytest +from algokit_utils import LogicError, OnCompleteCallParameters +from algokit_utils.beta.account_manager import AddressAndSigner + +from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( + CirculatingSupplyClient, +) +from smart_contracts.errors import std_errors as err + + +def test_pass_set_asset( + asset_circulating_supply_client: CirculatingSupplyClient, + asset_manager: AddressAndSigner, + asset: int, +) -> None: + assert asset == asset_circulating_supply_client.get_global_state().asset_id + + +def test_fail_unauthorized( + circulating_supply_client: CirculatingSupplyClient, + asset_creator: AddressAndSigner, + asset: int, +) -> None: + with pytest.raises(LogicError, match=err.UNAUTHORIZED): # type: ignore + circulating_supply_client.set_asset( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + sender=asset_creator.address, + signer=asset_creator.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + ), + ) diff --git a/assets/arc-0062/tests/test_set_not_circulating_address.py b/assets/arc-0062/tests/test_set_not_circulating_address.py new file mode 100644 index 000000000..a33315e61 --- /dev/null +++ b/assets/arc-0062/tests/test_set_not_circulating_address.py @@ -0,0 +1,123 @@ +import pytest +from algokit_utils import LogicError, OnCompleteCallParameters +from algokit_utils.beta.account_manager import AddressAndSigner +from algosdk.encoding import encode_address + +from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( + CirculatingSupplyClient, +) +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: AddressAndSigner, + asset: int, + burning_with_balance: AddressAndSigner, + locking_with_balance: AddressAndSigner, + generic_not_circulating_with_balance: AddressAndSigner, +) -> None: + asset_circulating_supply_client.set_not_circulating_address( + address=burning_with_balance.address, + label=cfg.BURNED, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[burning_with_balance.address], + ), + ) + + asset_circulating_supply_client.set_not_circulating_address( + address=locking_with_balance.address, + label=cfg.LOCKED, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[locking_with_balance.address], + ), + ) + + asset_circulating_supply_client.set_not_circulating_address( + address=generic_not_circulating_with_balance.address, + label=cfg.GENERIC, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[generic_not_circulating_with_balance.address], + ), + ) + + state = asset_circulating_supply_client.get_global_state() + + assert encode_address(state.burned.as_bytes) == burning_with_balance.address # type: ignore + assert encode_address(state.locked.as_bytes) == locking_with_balance.address # type: ignore + assert ( + encode_address(state.generic.as_bytes) # type: ignore + == generic_not_circulating_with_balance.address + ) + + +def test_fail_unauthorized( + asset_circulating_supply_client: CirculatingSupplyClient, + asset_creator: AddressAndSigner, + asset: int, + burning_with_balance: AddressAndSigner, +) -> None: + with pytest.raises(LogicError, match=err.UNAUTHORIZED): # type: ignore + asset_circulating_supply_client.set_not_circulating_address( + address=burning_with_balance.address, + label=cfg.BURNED, + transaction_parameters=OnCompleteCallParameters( + sender=asset_creator.address, + signer=asset_creator.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[burning_with_balance.address], + ), + ) + + +def test_fail_not_opted_in( + asset_circulating_supply_client: CirculatingSupplyClient, + asset_manager: AddressAndSigner, + asset: int, +) -> None: + with pytest.raises(LogicError, match=err.NOT_OPTED_IN): # type: ignore + asset_circulating_supply_client.set_not_circulating_address( + address=asset_manager.address, + label=cfg.BURNED, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[asset_manager.address], + ), + ) + + +def test_fail_invalid_label( + asset_circulating_supply_client: CirculatingSupplyClient, + asset_manager: AddressAndSigner, + asset: int, + burning_with_balance: AddressAndSigner, +) -> None: + with pytest.raises(LogicError, match=err.INVALID_LABEL): # type: ignore + asset_circulating_supply_client.set_not_circulating_address( + address=burning_with_balance.address, + label="spam", + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[burning_with_balance.address], + ), + ) From 1b7b526321ce5b860cff149d40c81769c42946df Mon Sep 17 00:00:00 2001 From: cusma Date: Tue, 16 Jul 2024 18:03:08 +0200 Subject: [PATCH 05/60] doc: please the ARC linter --- ARCs/arc-0062.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index f91a2fa7c..a1c0560ee 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -1,15 +1,14 @@ --- arc: 62 title: ASA circulating supply -description: An ARC to standardize a getter method for ASA circulating supply +description: Getter method for ASA circulating supply author: Cosimo Bassi (@cusma) -discussion-to: TBD +discussions-to: https://github.com/algorandfoundation/ARCs/issues/302 status: Draft type: Standards Track category: Interface created: 2024-06-12 requires: 4, 22 - --- ## Abstract @@ -64,7 +63,7 @@ supply of an ASA. The keywords "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" -in this document are to be interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119). +in this document are to be interpreted as described in RFC 2119. > Notes like this are non-normative. @@ -92,7 +91,7 @@ App_ in this specification): } ``` -The `arc62_get_circulating_supply` **MUST** be a _read-only_ ([ARC-0022](https://arc.algorand.foundation/ARCs/arc-0022)) +The `arc62_get_circulating_supply` **MUST** be a _read-only_ ([ARC-0022](./arc-0022.md)) method (getter). ### Usage @@ -148,8 +147,8 @@ An ASA conforming to this ARC **MUST** specify the Circulating Supply App ID. > To avoid ecosystem fragmentation this ARC does not propose any new method to specify > 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](https://arc.algorand.foundation/ARCs/arc-0003), -[ARC-19](https://arc.algorand.foundation/ARCs/arc-0019), [ARC-69](https://arc.algorand.foundation/ARCs/arc-0069)), +If the ASA also conforms to any ARC that supports additional `properties` ([ARC-3](./arc-0003.md), +[ARC-19](./arc-0019.md), [ARC-69](./arc-0069.md)), 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`. @@ -193,12 +192,12 @@ method for that ASA. ## Backwards Compatibility Existing ASA willing to conform to this ARC **SHOULD** specify the Circulating Supply -App ID as [ARC-2](https://arc.algorand.foundation/ARCs/arc-0002) `AssetConfig` transaction +App ID as [ARC-2](./arc-0002.md) `AssetConfig` transaction note field, as follows: - The `` **MUST** be equal to `arc62`; -- The **RECOMMENDED** `` are [MsgPack](https://msgpack.org/) (`m`) -or [JSON](https://www.json.org/json-en.html) (`j`); +- The **RECOMMENDED** `` are MsgPack +(`m`) or JSON (`j`); - The `` **MUST** specify `application-id` equal to the Circulating Supply App ID. @@ -216,8 +215,9 @@ arc62:j{"application-id":123} > This section is non-normative. -This section suggests a reference implementation of the Circulating Supply App, -published [here](../assets/arc-0062). +This section suggests a reference implementation of the Circulating Supply App. + +An Algorand-Python example is available [here](../assets/arc-0062). An ASA using the reference implementation **SHOULD NOT** assign the Reserve Address to the Circulating Supply App Account. @@ -263,4 +263,4 @@ is set to the Global `ZeroAddress`. ## Copyright -Copyright and related rights waived via [CCO](https://creativecommons.org/publicdomain/zero/1.0/). +Copyright and related rights waived via CCO. From a7ace3c6c1fdfd51c6dd7845c8dc86e9e577cddf Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 12:00:34 +0200 Subject: [PATCH 06/60] feat: handle closed accounts edge case --- .../CirculatingSupply.approval.teal | 113 ++++++++++++------ .../CirculatingSupply.arc32.json | 2 +- .../circulating_supply_client.py | 2 +- .../circulating_supply/contract.py | 13 +- .../tests/test_get_circulating_supply.py | 62 +++++++++- 5 files changed, 148 insertions(+), 44 deletions(-) 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 index e025f5893..686194258 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal @@ -320,19 +320,29 @@ arc62_get_circulating_supply: assert // asset exists global ZeroAddress == - // smart_contracts/circulating_supply/contract.py:78-80 - // UInt64(0) + // smart_contracts/circulating_supply/contract.py:79-80 // if asset.reserve == Global.zero_address - // else asset.balance(asset.reserve) - bz arc62_get_circulating_supply_ternary_false@2 + // or not asset.reserve.is_opted_in(asset) + bnz arc62_get_circulating_supply_ternary_true@2 + // smart_contracts/circulating_supply/contract.py:80 + // or not asset.reserve.is_opted_in(asset) + frame_dig -1 + asset_params_get AssetReserve + assert // asset exists + frame_dig -1 + asset_holding_get AssetBalance + bury 1 + bnz arc62_get_circulating_supply_ternary_false@3 + +arc62_get_circulating_supply_ternary_true@2: // smart_contracts/circulating_supply/contract.py:78 // UInt64(0) int 0 frame_bury 2 - b arc62_get_circulating_supply_ternary_merge@3 + b arc62_get_circulating_supply_ternary_merge@4 -arc62_get_circulating_supply_ternary_false@2: - // smart_contracts/circulating_supply/contract.py:80 +arc62_get_circulating_supply_ternary_false@3: + // smart_contracts/circulating_supply/contract.py:81 // else asset.balance(asset.reserve) frame_dig -1 asset_params_get AssetReserve @@ -342,89 +352,116 @@ arc62_get_circulating_supply_ternary_false@2: assert // account opted into asset frame_bury 2 -arc62_get_circulating_supply_ternary_merge@3: - // smart_contracts/circulating_supply/contract.py:83 - // UInt64(0) if burned == Global.zero_address else asset.balance(burned) +arc62_get_circulating_supply_ternary_merge@4: + // smart_contracts/circulating_supply/contract.py:85 + // if burned == Global.zero_address or not burned.is_opted_in(asset) frame_dig 3 global ZeroAddress == - bz arc62_get_circulating_supply_ternary_false@5 + bnz arc62_get_circulating_supply_ternary_true@6 + frame_dig 3 + frame_dig -1 + asset_holding_get AssetBalance + bury 1 + bnz arc62_get_circulating_supply_ternary_false@7 + +arc62_get_circulating_supply_ternary_true@6: + // smart_contracts/circulating_supply/contract.py:84 + // UInt64(0) int 0 frame_bury 0 - b arc62_get_circulating_supply_ternary_merge@6 + b arc62_get_circulating_supply_ternary_merge@8 -arc62_get_circulating_supply_ternary_false@5: - // smart_contracts/circulating_supply/contract.py:83 - // UInt64(0) if burned == Global.zero_address else asset.balance(burned) +arc62_get_circulating_supply_ternary_false@7: + // smart_contracts/circulating_supply/contract.py:86 + // else asset.balance(burned) frame_dig 3 frame_dig -1 asset_holding_get AssetBalance assert // account opted into asset frame_bury 0 -arc62_get_circulating_supply_ternary_merge@6: - // smart_contracts/circulating_supply/contract.py:86 - // UInt64(0) if locked == Global.zero_address else asset.balance(locked) +arc62_get_circulating_supply_ternary_merge@8: + // smart_contracts/circulating_supply/contract.py:90 + // if locked == Global.zero_address or not locked.is_opted_in(asset) frame_dig 4 global ZeroAddress == - bz arc62_get_circulating_supply_ternary_false@8 + bnz arc62_get_circulating_supply_ternary_true@10 + frame_dig 4 + frame_dig -1 + asset_holding_get AssetBalance + bury 1 + bnz arc62_get_circulating_supply_ternary_false@11 + +arc62_get_circulating_supply_ternary_true@10: + // smart_contracts/circulating_supply/contract.py:89 + // UInt64(0) int 0 frame_bury 1 - b arc62_get_circulating_supply_ternary_merge@9 + b arc62_get_circulating_supply_ternary_merge@12 -arc62_get_circulating_supply_ternary_false@8: - // smart_contracts/circulating_supply/contract.py:86 - // UInt64(0) if locked == Global.zero_address else asset.balance(locked) +arc62_get_circulating_supply_ternary_false@11: + // smart_contracts/circulating_supply/contract.py:91 + // else asset.balance(locked) frame_dig 4 frame_dig -1 asset_holding_get AssetBalance assert // account opted into asset frame_bury 1 -arc62_get_circulating_supply_ternary_merge@9: - // smart_contracts/circulating_supply/contract.py:89 - // UInt64(0) if generic == Global.zero_address else asset.balance(generic) +arc62_get_circulating_supply_ternary_merge@12: + // smart_contracts/circulating_supply/contract.py:95 + // if generic == Global.zero_address or not generic.is_opted_in(asset) frame_dig 5 global ZeroAddress == - bz arc62_get_circulating_supply_ternary_false@11 + bnz arc62_get_circulating_supply_ternary_true@14 + frame_dig 5 + frame_dig -1 + asset_holding_get AssetBalance + bury 1 + bnz arc62_get_circulating_supply_ternary_false@15 + +arc62_get_circulating_supply_ternary_true@14: + // smart_contracts/circulating_supply/contract.py:94 + // UInt64(0) int 0 - b arc62_get_circulating_supply_ternary_merge@12 + b arc62_get_circulating_supply_ternary_merge@16 -arc62_get_circulating_supply_ternary_false@11: - // smart_contracts/circulating_supply/contract.py:89 - // UInt64(0) if generic == Global.zero_address else asset.balance(generic) +arc62_get_circulating_supply_ternary_false@15: + // smart_contracts/circulating_supply/contract.py:96 + // else asset.balance(generic) frame_dig 5 frame_dig -1 asset_holding_get AssetBalance assert // account opted into asset -arc62_get_circulating_supply_ternary_merge@12: - // smart_contracts/circulating_supply/contract.py:92 +arc62_get_circulating_supply_ternary_merge@16: + // smart_contracts/circulating_supply/contract.py:99 // asset.total frame_dig -1 asset_params_get AssetTotal assert // asset exists - // smart_contracts/circulating_supply/contract.py:92-93 + // smart_contracts/circulating_supply/contract.py:99-100 // asset.total // - reserve_balance frame_dig 2 - - // smart_contracts/circulating_supply/contract.py:92-94 + // smart_contracts/circulating_supply/contract.py:99-101 // asset.total // - reserve_balance // - burned_balance frame_dig 0 - - // smart_contracts/circulating_supply/contract.py:92-95 + // smart_contracts/circulating_supply/contract.py:99-102 // asset.total // - reserve_balance // - burned_balance // - locked_balance frame_dig 1 - - // smart_contracts/circulating_supply/contract.py:92-96 + // smart_contracts/circulating_supply/contract.py:99-103 // asset.total // - reserve_balance // - burned_balance @@ -432,7 +469,7 @@ arc62_get_circulating_supply_ternary_merge@12: // - generic_balance swap - - // smart_contracts/circulating_supply/contract.py:91-97 + // smart_contracts/circulating_supply/contract.py:98-104 // return ( // asset.total // - reserve_balance diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json index ca2fa8a9c..20cbf83bb 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json @@ -18,7 +18,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzgtODAKICAgIC8vIFVJbnQ2NCgwKQogICAgLy8gaWYgYXNzZXQucmVzZXJ2ZSA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYXNzZXQucmVzZXJ2ZSkKICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA1CiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDgKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDkKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkyCiAgICAvLyBhc3NldC50b3RhbAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VG90YWwKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTMKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTQKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDEKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTYKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTEtOTcKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzktODAKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MQogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODUKICAgIC8vIGlmIGJ1cm5lZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBidXJuZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgMwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDYKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDcKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDgKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGJ1cm5lZCkKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAwCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTAKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UobG9ja2VkKQogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDEKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoZ2VuZXJpYykKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMAogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMgogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OS0xMDEKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTktMTAyCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMwogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICAvLyAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAtIGdlbmVyaWNfYmFsYW5jZQogICAgc3dhcAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OC0xMDQKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" }, "state": { 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 index 2dfb76cff..0db81b8f5 100644 --- 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 @@ -41,7 +41,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzgtODAKICAgIC8vIFVJbnQ2NCgwKQogICAgLy8gaWYgYXNzZXQucmVzZXJ2ZSA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYXNzZXQucmVzZXJ2ZSkKICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA1CiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODMKICAgIC8vIFVJbnQ2NCgwKSBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDgKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDkKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gVUludDY0KDApIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJ6IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkgaWYgZ2VuZXJpYyA9PSBHbG9iYWwuemVyb19hZGRyZXNzIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkyCiAgICAvLyBhc3NldC50b3RhbAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VG90YWwKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTMKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTQKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDEKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTItOTYKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTEtOTcKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzktODAKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MQogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODUKICAgIC8vIGlmIGJ1cm5lZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBidXJuZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgMwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDYKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDcKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDgKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGJ1cm5lZCkKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAwCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTAKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UobG9ja2VkKQogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDEKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoZ2VuZXJpYykKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMAogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMgogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OS0xMDEKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTktMTAyCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMwogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICAvLyAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAtIGdlbmVyaWNfYmFsYW5jZQogICAgc3dhcAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OC0xMDQKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" }, "state": { diff --git a/assets/arc-0062/smart_contracts/circulating_supply/contract.py b/assets/arc-0062/smart_contracts/circulating_supply/contract.py index b9d14a1fa..25a60fda3 100644 --- a/assets/arc-0062/smart_contracts/circulating_supply/contract.py +++ b/assets/arc-0062/smart_contracts/circulating_supply/contract.py @@ -77,16 +77,23 @@ def arc62_get_circulating_supply(self, asset_id: UInt64) -> UInt64: reserve_balance = ( UInt64(0) if asset.reserve == Global.zero_address + or not asset.reserve.is_opted_in(asset) else asset.balance(asset.reserve) ) burned_balance = ( - UInt64(0) if burned == Global.zero_address else asset.balance(burned) + UInt64(0) + if burned == Global.zero_address or not burned.is_opted_in(asset) + else asset.balance(burned) ) locked_balance = ( - UInt64(0) if locked == Global.zero_address else asset.balance(locked) + UInt64(0) + if locked == Global.zero_address or not locked.is_opted_in(asset) + else asset.balance(locked) ) generic_balance = ( - UInt64(0) if generic == Global.zero_address else asset.balance(generic) + UInt64(0) + if generic == Global.zero_address or not generic.is_opted_in(asset) + else asset.balance(generic) ) return ( asset.total diff --git a/assets/arc-0062/tests/test_get_circulating_supply.py b/assets/arc-0062/tests/test_get_circulating_supply.py index 5215f1d52..4c63a7913 100644 --- a/assets/arc-0062/tests/test_get_circulating_supply.py +++ b/assets/arc-0062/tests/test_get_circulating_supply.py @@ -1,6 +1,10 @@ from algokit_utils import OnCompleteCallParameters from algokit_utils.beta.account_manager import AddressAndSigner -from algokit_utils.beta.algorand_client import AlgorandClient, AssetConfigParams +from algokit_utils.beta.algorand_client import ( + AlgorandClient, + AssetConfigParams, + AssetTransferParams, +) from smart_contracts.artifacts.circulating_supply.circulating_supply_client import ( CirculatingSupplyClient, @@ -151,3 +155,59 @@ def test_pass_no_reserve( ), ).return_value assert circulating_supply == total + + +def test_pass_closed_address( + algorand_client: AlgorandClient, + asset_circulating_supply_client: CirculatingSupplyClient, + asset_creator: AddressAndSigner, + asset_manager: AddressAndSigner, + reserve_with_balance: AddressAndSigner, + burning_with_balance: AddressAndSigner, + asset: int, +) -> None: + total: int = algorand_client.client.algod.asset_info(asset)["params"]["total"] # type: ignore + + asset_circulating_supply_client.set_not_circulating_address( + address=burning_with_balance.address, + label=cfg.BURNED, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[burning_with_balance.address], + ), + ) + + algorand_client.send.asset_transfer( + AssetTransferParams( + sender=burning_with_balance.address, + signer=burning_with_balance.signer, + asset_id=asset, + amount=0, + receiver=asset_creator.address, + close_asset_to=asset_creator.address, + ), + ) + + algorand_client.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.arc62_get_circulating_supply( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + accounts=[reserve_with_balance.address, burning_with_balance.address], + ), + ).return_value + assert circulating_supply == total From 07514a7dc066d775fd7907bd665ad6fb70376e22 Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 12:11:54 +0200 Subject: [PATCH 07/60] feat: specify ARC number in assets --- .../artifacts/circulating_supply/CirculatingSupply.arc32.json | 2 +- .../artifacts/circulating_supply/circulating_supply_client.py | 4 ++-- .../arc-0062/smart_contracts/circulating_supply/contract.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json index 20cbf83bb..9de8e1d3a 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json @@ -60,7 +60,7 @@ }, "contract": { "name": "CirculatingSupply", - "desc": "ARC-XXXX Reference Implementation", + "desc": "ARC-62 Reference Implementation", "methods": [ { "name": "set_asset", 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 index 0db81b8f5..72bf4edba 100644 --- 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 @@ -134,7 +134,7 @@ } ], "networks": {}, - "desc": "ARC-XXXX Reference Implementation" + "desc": "ARC-62 Reference Implementation" }, "bare_call_config": { "no_op": "CREATE" @@ -423,7 +423,7 @@ def clear_state( class CirculatingSupplyClient: - """ARC-XXXX Reference Implementation + """ARC-62 Reference Implementation A class for interacting with the CirculatingSupply app providing high productivity and strongly typed methods to deploy and call the app""" diff --git a/assets/arc-0062/smart_contracts/circulating_supply/contract.py b/assets/arc-0062/smart_contracts/circulating_supply/contract.py index 25a60fda3..ee6c72954 100644 --- a/assets/arc-0062/smart_contracts/circulating_supply/contract.py +++ b/assets/arc-0062/smart_contracts/circulating_supply/contract.py @@ -9,7 +9,7 @@ class CirculatingSupply(ARC4Contract): - """ARC-XXXX Reference Implementation""" + """ARC-62 Reference Implementation""" def __init__(self) -> None: # Global State From fd315107326c55f27a82040343ce622a48cbb82d Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 12:15:53 +0200 Subject: [PATCH 08/60] test: asset already set --- assets/arc-0062/tests/test_set_asset.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/assets/arc-0062/tests/test_set_asset.py b/assets/arc-0062/tests/test_set_asset.py index 5be76e59b..d62d22db6 100644 --- a/assets/arc-0062/tests/test_set_asset.py +++ b/assets/arc-0062/tests/test_set_asset.py @@ -16,7 +16,7 @@ def test_pass_set_asset( assert asset == asset_circulating_supply_client.get_global_state().asset_id -def test_fail_unauthorized( +def test_fail_unauthorized_manager( circulating_supply_client: CirculatingSupplyClient, asset_creator: AddressAndSigner, asset: int, @@ -31,3 +31,20 @@ def test_fail_unauthorized( foreign_assets=[asset], ), ) + + +def test_fail_unauthorized_already_set( + asset_circulating_supply_client: CirculatingSupplyClient, + asset_manager: AddressAndSigner, + asset: int, +) -> None: + with pytest.raises(LogicError, match=err.UNAUTHORIZED): # type: ignore + asset_circulating_supply_client.set_asset( + asset_id=asset, + transaction_parameters=OnCompleteCallParameters( + sender=asset_manager.address, + signer=asset_manager.signer, + # TODO: Foreign resources should be auto-populated + foreign_assets=[asset], + ), + ) From ef705d1abb14687f5ca5c3dd93d6262eee58db48 Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 12:19:11 +0200 Subject: [PATCH 09/60] feat: remove unused std errors --- assets/arc-0062/smart_contracts/errors/std_errors.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/assets/arc-0062/smart_contracts/errors/std_errors.py b/assets/arc-0062/smart_contracts/errors/std_errors.py index d68e92de1..9c7bbe950 100644 --- a/assets/arc-0062/smart_contracts/errors/std_errors.py +++ b/assets/arc-0062/smart_contracts/errors/std_errors.py @@ -1,9 +1,4 @@ # Errors -WRONG_GLOBAL_BYTES = "Wrong Global Bytes allocation" -WRONG_GLOBAL_UINTS = "Wrong Global UInts allocation" -WRONG_LOCAL_BYTES = "Wrong Local Bytes allocation" -WRONG_LOCAL_UINTS = "Wrong Local UInts allocation" - UNAUTHORIZED = "Unauthorized" NOT_OPTED_IN = "Not Opted-In" INVALID_LABEL = "Invalid Label" From eb3803efde96c94685bc97a303f4b6d61f2835a7 Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 16:26:48 +0200 Subject: [PATCH 10/60] doc: normative backwards compatibility --- ARCs/arc-0062.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index a1c0560ee..b945b7dd8 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -191,9 +191,8 @@ method for that ASA. ## Backwards Compatibility -Existing ASA willing to conform to this ARC **SHOULD** 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** specify the Circulating Supply +App ID as [ARC-2](./arc-0002.md) `AssetConfig` transaction note field, as follows: - The `` **MUST** be equal to `arc62`; - The **RECOMMENDED** `` are MsgPack From 422753308995d9a256667fe67ef48951478d7a3a Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 16:30:43 +0200 Subject: [PATCH 11/60] doc: add security considerations --- ARCs/arc-0062.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index b945b7dd8..f8f5f885f 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -258,7 +258,11 @@ is set to the Global `ZeroAddress`. ## Security Considerations -> Not Applicable +Permissions over the Circulating Supply App setting and update **SHOULD** be granted +to the ASA Manager Address. + +> The ASA trust-model (i.e. who sets the Reserve Address) is extended to the generalized +> ASA circulating supply definition. ## Copyright From d47e29867de379df4909bcdd23cd6e129353f87c Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 16:52:18 +0200 Subject: [PATCH 12/60] doc: nit --- ARCs/arc-0062.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index f8f5f885f..425aff04f 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -200,9 +200,9 @@ App ID as [ARC-2](./arc-0002.md) `AssetConfig` transaction note field, as follow - The `` **MUST** specify `application-id` equal to the Circulating Supply App ID. -**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! +> **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 From 6e748fa1e6d313e47afad8cac0cea7ea3c380674 Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 16:56:51 +0200 Subject: [PATCH 13/60] doc: nit --- ARCs/arc-0062.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 425aff04f..519ecb81b 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -1,6 +1,6 @@ --- arc: 62 -title: ASA circulating supply +title: ASA Circulating Supply description: Getter method for ASA circulating supply author: Cosimo Bassi (@cusma) discussions-to: https://github.com/algorandfoundation/ARCs/issues/302 @@ -91,7 +91,7 @@ App_ in this specification): } ``` -The `arc62_get_circulating_supply` **MUST** be a _read-only_ ([ARC-0022](./arc-0022.md)) +The `arc62_get_circulating_supply` **MUST** be a _read-only_ ([ARC-22](./arc-0022.md)) method (getter). ### Usage From 7585d2b79432402e7dd631b9e919df7f9a390744 Mon Sep 17 00:00:00 2001 From: cusma Date: Wed, 17 Jul 2024 17:01:55 +0200 Subject: [PATCH 14/60] doc: add readonly key --- ARCs/arc-0062.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 519ecb81b..e89783362 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -76,6 +76,7 @@ App_ in this specification): ```json { "name": "arc62_get_circulating_supply", + "readonly": true, "args": [ { "type": "uint64", From d616f38e8f992d1e680793da945ed02e97813abb Mon Sep 17 00:00:00 2001 From: cusma Date: Thu, 18 Jul 2024 10:46:28 +0200 Subject: [PATCH 15/60] doc: add ref. implementation details --- ARCs/arc-0062.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index e89783362..fb97ddb2d 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -225,7 +225,7 @@ to the Circulating Supply App Account. A reference implementation **SHOULD** declare, at least, the following Global State variables: -- `asset_id` as UInt64, initialized to `0` and set _once_ by the ASA Manager Address; +- `asset_id` as UInt64, initialized to `0` and set **once** by the ASA Manager Address; - `burned` address as Bytes, initialized to the Global `Zero Address` and set by the ASA Manager Address; - `locked` address as Bytes, initialized to the Global `Zero Address` and set by @@ -233,6 +233,9 @@ the ASA Manager Address; - `generic` address as Bytes, initialized to the Global `Zero Address` and set by the ASA Manager Address. +A reference implementation **SHOULD** enforce that, upon setting `burned`, `locked` +and `generic` addresses, the latter already opted-in the `asset_id`. + A reference implementation **SHOULD** enforce that the `asset_id` Global Variable is equal to the `asset_id` argument of the `arc62_get_circulating_supply` method. @@ -249,13 +252,13 @@ 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`; +address is set to the Global `ZeroAddress` or not opted-in `asset_id`; - `burned_balance` is the ASA balance hold by the Burned Address or `0` if the address -is set to the Global `ZeroAddress`; +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`; +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`. +is set to the Global `ZeroAddress` or not opted-in `asset_id`. ## Security Considerations From 45d0b66de8454ecc5031be9c80f516731955584b Mon Sep 17 00:00:00 2001 From: cusma Date: Thu, 18 Jul 2024 16:02:22 +0200 Subject: [PATCH 16/60] doc: promote to review --- ARCs/arc-0062.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index fb97ddb2d..a634f72d0 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -4,7 +4,7 @@ title: ASA Circulating Supply description: Getter method for ASA circulating supply author: Cosimo Bassi (@cusma) discussions-to: https://github.com/algorandfoundation/ARCs/issues/302 -status: Draft +status: Review type: Standards Track category: Interface created: 2024-06-12 From f3efcf92a40ef43de35611ece2a86fe759addd8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 19 Jul 2024 11:21:22 +0200 Subject: [PATCH 17/60] ARC-2 How to handle ARC data inside a note We would like to have a more precise version of how to read notes related to ARCs. Here is a little list of options we have in mind: af/arc:j{:{...}, :{...}, ...} (no 0 padding for ), allows multiple ARCs in one note field, harder to parse (maybe) af/arc:j{...} (no 0 padding for ) single ARC per note field, maybe easier to fetch and parse arc:j{...} (with 0 padding for ) single ARC per note field, maybe easier to fetch and parse --- ARCs/arc-0002.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index c1abe6b3a..69b271626 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -33,6 +33,9 @@ where: * be at least 5 characters long * be at most 32 characters long * Names starting with `a/` and `af/` are reserved for the Algorand protocol and the Algorand Foundation uses. + + + * `` is one of the following: * `m`: MsgPack * `j`: JSON From ed031b8ba8963d7c5403cfb895096283d186a90e Mon Sep 17 00:00:00 2001 From: cusma Date: Fri, 19 Jul 2024 12:18:31 +0200 Subject: [PATCH 18/60] doc: generalise labels, add JSON state schema --- ARCs/arc-0062.md | 88 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index a634f72d0..b2fe38d7a 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -100,7 +100,7 @@ method (getter). Getter calls **SHOULD** be _simulated_. External resources used by the implementation (if any) **SHOULD** be discovered -and autopopulated by the simulated method call. +and auto-populated by the simulated method call. #### Example 1 @@ -119,7 +119,7 @@ and autopopulated by the simulated method call. > circulating_supply = total - reserve_balance - burned_balance - locked_balance > ``` > -> In this case the simulated read-only method call would autopopulate 1 external +> 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). #### Example 2 @@ -135,7 +135,7 @@ and autopopulated by the simulated method call. > circulating_supply = total - non_circulating_amount > ``` > -> In this case the simulated read-only method call would autopopulate just 1 external +> In this case the simulated read-only method call would auto-populate just 1 external > reference for the ASA. ### Circulating Supply Application discovery @@ -178,7 +178,7 @@ For this reason, the proposed method’s signature does not require any referenc to external resources, a part form the `asset_id` of the ASA for which the circulating supply is defined. -Eventual external resources can be discovered and autopopulated directly by the +Eventual external resources can be discovered and auto-populated directly by the simulated method call. The rational of this design choice is avoiding fragmentation and integration overhead @@ -222,27 +222,87 @@ An Algorand-Python example is available [here](../assets/arc-0062). An ASA using the reference implementation **SHOULD NOT** assign the Reserve Address to the Circulating Supply App Account. -A reference implementation **SHOULD** declare, at least, the following Global State +A reference implementation **SHOULD** use 3 external addresses, in addition to the +Reserve Address, to define the not circulating supply. + +The **RECOMMENDED** labels for not-circulating balances are: `burned`, `locked` +and `generic`. + +> 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" +> ``` + +### State Schema + +A reference implementation **SHOULD** allocate, at least, the following Global State variables: -- `asset_id` as UInt64, initialized to `0` and set **once** by the ASA Manager Address; -- `burned` address as Bytes, initialized to the Global `Zero Address` and set by -the ASA Manager Address; -- `locked` address as Bytes, initialized to the Global `Zero Address` and set by -the ASA Manager Address; -- `generic` address as Bytes, initialized to the Global `Zero Address` and set by -the ASA Manager Address. +- `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. A reference implementation **SHOULD** enforce that, upon setting `burned`, `locked` and `generic` addresses, the latter already opted-in the `asset_id`. +```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": {} + } +}, +``` + +### Circulating Supply Getter + A reference implementation **SHOULD** enforce that the `asset_id` Global Variable -is equal to the `asset_id` argument of the `arc62_get_circulating_supply` method. +is equal to the `asset_id` argument of the `arc62_get_circulating_supply` getter +method. > Alternatively the reference implementation could ignore the `asset_id` argument > and use directly the `asset_id` Global Variable. -A reference implementation **SHOULD** define the ASA _circulating supply_ as: +A reference implementation **SHOULD** return the ASA _circulating supply_ as: ```text circulating_supply = total - reserve_balance - burned_balance - locked_balance - generic_balance From 539d9f7a6d23bf73b9810b49a5a00ac058016da4 Mon Sep 17 00:00:00 2001 From: cusma Date: Fri, 19 Jul 2024 12:18:51 +0200 Subject: [PATCH 19/60] feat: generic labels in ref. implementation --- .../CirculatingSupply.approval.teal | 218 +++++++++--------- .../CirculatingSupply.arc32.json | 16 +- .../CirculatingSupply.clear.teal | 2 +- .../circulating_supply_client.py | 28 +-- .../circulating_supply/config.py | 6 +- .../circulating_supply/contract.py | 43 ++-- assets/arc-0062/tests/conftest.py | 66 +++--- assets/arc-0062/tests/test_deploy.py | 6 +- .../tests/test_get_circulating_supply.py | 70 +++--- .../tests/test_set_not_circulating_address.py | 49 ++-- 10 files changed, 263 insertions(+), 241 deletions(-) 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 index 686194258..694d74d40 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal @@ -6,7 +6,7 @@ smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program: callsub __init__ main_entrypoint@2: - // smart_contracts/circulating_supply/contract.py:11 + // smart_contracts/circulating_supply/contract.py:20 // class CirculatingSupply(ARC4Contract): txn NumAppArgs bz main_bare_routing@9 @@ -18,55 +18,55 @@ main_entrypoint@2: err // reject transaction main_set_asset_route@4: - // smart_contracts/circulating_supply/contract.py:21 + // smart_contracts/circulating_supply/contract.py:36 // @abimethod() txn OnCompletion ! assert // OnCompletion is NoOp txn ApplicationID assert // is not creating - // smart_contracts/circulating_supply/contract.py:11 + // smart_contracts/circulating_supply/contract.py:20 // class CirculatingSupply(ARC4Contract): txna ApplicationArgs 1 btoi - // smart_contracts/circulating_supply/contract.py:21 + // smart_contracts/circulating_supply/contract.py:36 // @abimethod() callsub set_asset int 1 return main_set_not_circulating_address_route@5: - // smart_contracts/circulating_supply/contract.py:35 + // smart_contracts/circulating_supply/contract.py:50 // @abimethod() txn OnCompletion ! assert // OnCompletion is NoOp txn ApplicationID assert // is not creating - // smart_contracts/circulating_supply/contract.py:11 + // smart_contracts/circulating_supply/contract.py:20 // class CirculatingSupply(ARC4Contract): txna ApplicationArgs 1 txna ApplicationArgs 2 extract 2 0 - // smart_contracts/circulating_supply/contract.py:35 + // smart_contracts/circulating_supply/contract.py:50 // @abimethod() callsub set_not_circulating_address int 1 return main_arc62_get_circulating_supply_route@6: - // smart_contracts/circulating_supply/contract.py:59 + // smart_contracts/circulating_supply/contract.py:74 // @abimethod(readonly=True) txn OnCompletion ! assert // OnCompletion is NoOp txn ApplicationID assert // is not creating - // smart_contracts/circulating_supply/contract.py:11 + // smart_contracts/circulating_supply/contract.py:20 // class CirculatingSupply(ARC4Contract): txna ApplicationArgs 1 btoi - // smart_contracts/circulating_supply/contract.py:59 + // smart_contracts/circulating_supply/contract.py:74 // @abimethod(readonly=True) callsub arc62_get_circulating_supply itob @@ -78,7 +78,7 @@ main_arc62_get_circulating_supply_route@6: return main_bare_routing@9: - // smart_contracts/circulating_supply/contract.py:11 + // smart_contracts/circulating_supply/contract.py:20 // class CirculatingSupply(ARC4Contract): txn OnCompletion ! @@ -92,11 +92,11 @@ main_bare_routing@9: // smart_contracts.circulating_supply.contract.CirculatingSupply.set_asset(asset_id: uint64) -> void: set_asset: - // smart_contracts/circulating_supply/contract.py:21-22 + // smart_contracts/circulating_supply/contract.py:36-37 // @abimethod() // def set_asset(self, asset_id: UInt64) -> None: proto 1 0 - // smart_contracts/circulating_supply/contract.py:30-31 + // smart_contracts/circulating_supply/contract.py:45-46 // # Preconditions // assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED txn Sender @@ -106,11 +106,11 @@ set_asset: == bz set_asset_bool_false@3 int 0 - // smart_contracts/circulating_supply/contract.py:15-16 + // smart_contracts/circulating_supply/contract.py:24-25 // # Global State // self.asset_id = UInt64() byte "asset_id" - // smart_contracts/circulating_supply/contract.py:30-31 + // smart_contracts/circulating_supply/contract.py:45-46 // # Preconditions // assert Txn.sender == asset.manager and not self.asset_id, err.UNAUTHORIZED app_global_get_ex @@ -123,15 +123,15 @@ set_asset_bool_false@3: int 0 set_asset_bool_merge@4: - // smart_contracts/circulating_supply/contract.py:30-31 + // 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:15-16 + // smart_contracts/circulating_supply/contract.py:24-25 // # Global State // self.asset_id = UInt64() byte "asset_id" - // smart_contracts/circulating_supply/contract.py:32-33 + // smart_contracts/circulating_supply/contract.py:47-48 // # Effects // self.asset_id = asset_id frame_dig -1 @@ -141,22 +141,22 @@ set_asset_bool_merge@4: // smart_contracts.circulating_supply.contract.CirculatingSupply.set_not_circulating_address(address: bytes, label: bytes) -> void: set_not_circulating_address: - // smart_contracts/circulating_supply/contract.py:35-36 + // smart_contracts/circulating_supply/contract.py:50-51 // @abimethod() // def set_not_circulating_address(self, address: Address, label: String) -> None: proto 2 0 - // smart_contracts/circulating_supply/contract.py:44 + // smart_contracts/circulating_supply/contract.py:59 // asset = Asset(self.asset_id) int 0 - // smart_contracts/circulating_supply/contract.py:15-16 + // smart_contracts/circulating_supply/contract.py:24-25 // # Global State // self.asset_id = UInt64() byte "asset_id" - // smart_contracts/circulating_supply/contract.py:44 + // smart_contracts/circulating_supply/contract.py:59 // asset = Asset(self.asset_id) app_global_get_ex assert // check self.asset_id exists - // smart_contracts/circulating_supply/contract.py:45-46 + // smart_contracts/circulating_supply/contract.py:60-61 // # Preconditions // assert Txn.sender == asset.manager, err.UNAUTHORIZED txn Sender @@ -167,7 +167,7 @@ set_not_circulating_address: uncover 2 == assert // Unauthorized - // smart_contracts/circulating_supply/contract.py:47 + // smart_contracts/circulating_supply/contract.py:62 // assert Account(address.bytes).is_opted_in(asset), err.NOT_OPTED_IN frame_dig -2 len @@ -179,58 +179,58 @@ set_not_circulating_address: asset_holding_get AssetBalance bury 1 assert // Not Opted-In - // smart_contracts/circulating_supply/contract.py:50 - // case cfg.BURNED: + // smart_contracts/circulating_supply/contract.py:65 + // case cfg.NOT_CIRCULATING_LABEL_1: byte "burned" - // smart_contracts/circulating_supply/contract.py:52 - // case cfg.LOCKED: + // smart_contracts/circulating_supply/contract.py:67 + // case cfg.NOT_CIRCULATING_LABEL_2: byte "locked" - // smart_contracts/circulating_supply/contract.py:54 - // case cfg.GENERIC: + // smart_contracts/circulating_supply/contract.py:69 + // case cfg.NOT_CIRCULATING_LABEL_3: byte "generic" - // smart_contracts/circulating_supply/contract.py:48-57 + // smart_contracts/circulating_supply/contract.py:63-72 // # Effects // match label: - // case cfg.BURNED: - // self.burned = address - // case cfg.LOCKED: - // self.locked = address - // case cfg.GENERIC: - // self.generic = address + // 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 frame_dig -1 match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3 - // smart_contracts/circulating_supply/contract.py:57 + // smart_contracts/circulating_supply/contract.py:72 // assert False, err.INVALID_LABEL err // Invalid Label set_not_circulating_address_switch_case_0@1: - // smart_contracts/circulating_supply/contract.py:17 - // self.burned = Address() + // smart_contracts/circulating_supply/contract.py:27 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_1 byte "burned" - // smart_contracts/circulating_supply/contract.py:51 - // self.burned = address + // smart_contracts/circulating_supply/contract.py:66 + // self.not_circulating_label_1.value = address frame_dig -2 app_global_put b set_not_circulating_address_switch_case_next@5 set_not_circulating_address_switch_case_1@2: - // smart_contracts/circulating_supply/contract.py:18 - // self.locked = Address() + // smart_contracts/circulating_supply/contract.py:30 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_2 byte "locked" - // smart_contracts/circulating_supply/contract.py:53 - // self.locked = address + // smart_contracts/circulating_supply/contract.py:68 + // self.not_circulating_label_2.value = address frame_dig -2 app_global_put b set_not_circulating_address_switch_case_next@5 set_not_circulating_address_switch_case_2@3: - // smart_contracts/circulating_supply/contract.py:19 - // self.generic = Address() + // smart_contracts/circulating_supply/contract.py:33 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_3 byte "generic" - // smart_contracts/circulating_supply/contract.py:55 - // self.generic = address + // smart_contracts/circulating_supply/contract.py:70 + // self.not_circulating_label_3.value = address frame_dig -2 app_global_put @@ -240,72 +240,72 @@ set_not_circulating_address_switch_case_next@5: // smart_contracts.circulating_supply.contract.CirculatingSupply.arc62_get_circulating_supply(asset_id: uint64) -> uint64: arc62_get_circulating_supply: - // smart_contracts/circulating_supply/contract.py:59-60 + // smart_contracts/circulating_supply/contract.py:74-75 // @abimethod(readonly=True) // def arc62_get_circulating_supply(self, asset_id: UInt64) -> UInt64: proto 1 1 byte "" dupn 2 - // smart_contracts/circulating_supply/contract.py:71 - // burned = Account(self.burned.bytes) + // smart_contracts/circulating_supply/contract.py:86 + // burned = Account(self.not_circulating_label_1.value.bytes) int 0 - // smart_contracts/circulating_supply/contract.py:17 - // self.burned = Address() + // smart_contracts/circulating_supply/contract.py:27 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_1 byte "burned" - // smart_contracts/circulating_supply/contract.py:71 - // burned = Account(self.burned.bytes) + // smart_contracts/circulating_supply/contract.py:86 + // burned = Account(self.not_circulating_label_1.value.bytes) app_global_get_ex swap dup uncover 2 - assert // check self.burned exists + assert // check self.not_circulating_label_1 exists len int 32 == assert // Address length is 32 bytes - // smart_contracts/circulating_supply/contract.py:72 - // locked = Account(self.locked.bytes) + // smart_contracts/circulating_supply/contract.py:87 + // locked = Account(self.not_circulating_label_2.value.bytes) int 0 - // smart_contracts/circulating_supply/contract.py:18 - // self.locked = Address() + // smart_contracts/circulating_supply/contract.py:30 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_2 byte "locked" - // smart_contracts/circulating_supply/contract.py:72 - // locked = Account(self.locked.bytes) + // smart_contracts/circulating_supply/contract.py:87 + // locked = Account(self.not_circulating_label_2.value.bytes) app_global_get_ex swap dup uncover 2 - assert // check self.locked exists + assert // check self.not_circulating_label_2 exists len int 32 == assert // Address length is 32 bytes - // smart_contracts/circulating_supply/contract.py:73 - // generic = Account(self.generic.bytes) + // smart_contracts/circulating_supply/contract.py:88 + // generic = Account(self.not_circulating_label_3.value.bytes) int 0 - // smart_contracts/circulating_supply/contract.py:19 - // self.generic = Address() + // smart_contracts/circulating_supply/contract.py:33 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_3 byte "generic" - // smart_contracts/circulating_supply/contract.py:73 - // generic = Account(self.generic.bytes) + // smart_contracts/circulating_supply/contract.py:88 + // generic = Account(self.not_circulating_label_3.value.bytes) app_global_get_ex swap dup uncover 2 - assert // check self.generic exists + assert // check self.not_circulating_label_3 exists len int 32 == assert // Address length is 32 bytes - // smart_contracts/circulating_supply/contract.py:74-75 + // smart_contracts/circulating_supply/contract.py:89-90 // # Preconditions // assert asset_id == self.asset_id, err.INVALID_ASSET_ID int 0 - // smart_contracts/circulating_supply/contract.py:15-16 + // smart_contracts/circulating_supply/contract.py:24-25 // # Global State // self.asset_id = UInt64() byte "asset_id" - // smart_contracts/circulating_supply/contract.py:74-75 + // smart_contracts/circulating_supply/contract.py:89-90 // # Preconditions // assert asset_id == self.asset_id, err.INVALID_ASSET_ID app_global_get_ex @@ -313,18 +313,18 @@ arc62_get_circulating_supply: frame_dig -1 == assert // Invalid ASA ID - // smart_contracts/circulating_supply/contract.py:79 + // smart_contracts/circulating_supply/contract.py:94 // if asset.reserve == Global.zero_address frame_dig -1 asset_params_get AssetReserve assert // asset exists global ZeroAddress == - // smart_contracts/circulating_supply/contract.py:79-80 + // 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@2 - // smart_contracts/circulating_supply/contract.py:80 + // smart_contracts/circulating_supply/contract.py:95 // or not asset.reserve.is_opted_in(asset) frame_dig -1 asset_params_get AssetReserve @@ -335,14 +335,14 @@ arc62_get_circulating_supply: bnz arc62_get_circulating_supply_ternary_false@3 arc62_get_circulating_supply_ternary_true@2: - // smart_contracts/circulating_supply/contract.py:78 + // smart_contracts/circulating_supply/contract.py:93 // UInt64(0) int 0 frame_bury 2 b arc62_get_circulating_supply_ternary_merge@4 arc62_get_circulating_supply_ternary_false@3: - // smart_contracts/circulating_supply/contract.py:81 + // smart_contracts/circulating_supply/contract.py:96 // else asset.balance(asset.reserve) frame_dig -1 asset_params_get AssetReserve @@ -353,7 +353,7 @@ arc62_get_circulating_supply_ternary_false@3: frame_bury 2 arc62_get_circulating_supply_ternary_merge@4: - // smart_contracts/circulating_supply/contract.py:85 + // smart_contracts/circulating_supply/contract.py:100 // if burned == Global.zero_address or not burned.is_opted_in(asset) frame_dig 3 global ZeroAddress @@ -366,14 +366,14 @@ arc62_get_circulating_supply_ternary_merge@4: bnz arc62_get_circulating_supply_ternary_false@7 arc62_get_circulating_supply_ternary_true@6: - // smart_contracts/circulating_supply/contract.py:84 + // smart_contracts/circulating_supply/contract.py:99 // UInt64(0) int 0 frame_bury 0 b arc62_get_circulating_supply_ternary_merge@8 arc62_get_circulating_supply_ternary_false@7: - // smart_contracts/circulating_supply/contract.py:86 + // smart_contracts/circulating_supply/contract.py:101 // else asset.balance(burned) frame_dig 3 frame_dig -1 @@ -382,7 +382,7 @@ arc62_get_circulating_supply_ternary_false@7: frame_bury 0 arc62_get_circulating_supply_ternary_merge@8: - // smart_contracts/circulating_supply/contract.py:90 + // smart_contracts/circulating_supply/contract.py:105 // if locked == Global.zero_address or not locked.is_opted_in(asset) frame_dig 4 global ZeroAddress @@ -395,14 +395,14 @@ arc62_get_circulating_supply_ternary_merge@8: bnz arc62_get_circulating_supply_ternary_false@11 arc62_get_circulating_supply_ternary_true@10: - // smart_contracts/circulating_supply/contract.py:89 + // smart_contracts/circulating_supply/contract.py:104 // UInt64(0) int 0 frame_bury 1 b arc62_get_circulating_supply_ternary_merge@12 arc62_get_circulating_supply_ternary_false@11: - // smart_contracts/circulating_supply/contract.py:91 + // smart_contracts/circulating_supply/contract.py:106 // else asset.balance(locked) frame_dig 4 frame_dig -1 @@ -411,7 +411,7 @@ arc62_get_circulating_supply_ternary_false@11: frame_bury 1 arc62_get_circulating_supply_ternary_merge@12: - // smart_contracts/circulating_supply/contract.py:95 + // smart_contracts/circulating_supply/contract.py:110 // if generic == Global.zero_address or not generic.is_opted_in(asset) frame_dig 5 global ZeroAddress @@ -424,13 +424,13 @@ arc62_get_circulating_supply_ternary_merge@12: bnz arc62_get_circulating_supply_ternary_false@15 arc62_get_circulating_supply_ternary_true@14: - // smart_contracts/circulating_supply/contract.py:94 + // smart_contracts/circulating_supply/contract.py:109 // UInt64(0) int 0 b arc62_get_circulating_supply_ternary_merge@16 arc62_get_circulating_supply_ternary_false@15: - // smart_contracts/circulating_supply/contract.py:96 + // smart_contracts/circulating_supply/contract.py:111 // else asset.balance(generic) frame_dig 5 frame_dig -1 @@ -438,30 +438,30 @@ arc62_get_circulating_supply_ternary_false@15: assert // account opted into asset arc62_get_circulating_supply_ternary_merge@16: - // smart_contracts/circulating_supply/contract.py:99 + // smart_contracts/circulating_supply/contract.py:114 // asset.total frame_dig -1 asset_params_get AssetTotal assert // asset exists - // smart_contracts/circulating_supply/contract.py:99-100 + // smart_contracts/circulating_supply/contract.py:114-115 // asset.total // - reserve_balance frame_dig 2 - - // smart_contracts/circulating_supply/contract.py:99-101 + // smart_contracts/circulating_supply/contract.py:114-116 // asset.total // - reserve_balance // - burned_balance frame_dig 0 - - // smart_contracts/circulating_supply/contract.py:99-102 + // smart_contracts/circulating_supply/contract.py:114-117 // asset.total // - reserve_balance // - burned_balance // - locked_balance frame_dig 1 - - // smart_contracts/circulating_supply/contract.py:99-103 + // smart_contracts/circulating_supply/contract.py:114-118 // asset.total // - reserve_balance // - burned_balance @@ -469,7 +469,7 @@ arc62_get_circulating_supply_ternary_merge@16: // - generic_balance swap - - // smart_contracts/circulating_supply/contract.py:98-104 + // smart_contracts/circulating_supply/contract.py:113-119 // return ( // asset.total // - reserve_balance @@ -483,28 +483,40 @@ arc62_get_circulating_supply_ternary_merge@16: // smart_contracts.circulating_supply.contract.CirculatingSupply.__init__() -> void: __init__: - // smart_contracts/circulating_supply/contract.py:14 + // smart_contracts/circulating_supply/contract.py:23 // def __init__(self) -> None: proto 0 0 - // smart_contracts/circulating_supply/contract.py:15-16 + // smart_contracts/circulating_supply/contract.py:24-25 // # Global State // self.asset_id = UInt64() byte "asset_id" int 0 app_global_put - // smart_contracts/circulating_supply/contract.py:17 - // self.burned = Address() + // smart_contracts/circulating_supply/contract.py:27 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_1 byte "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:18 - // self.locked = Address() + // smart_contracts/circulating_supply/contract.py:30 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_2 byte "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:19 - // self.generic = Address() + // smart_contracts/circulating_supply/contract.py:33 + // Address(), key=cfg.NOT_CIRCULATING_LABEL_3 byte "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 retsub diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json index 9de8e1d3a..8736a470b 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json @@ -18,8 +18,8 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzktODAKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MQogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODUKICAgIC8vIGlmIGJ1cm5lZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBidXJuZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgMwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDYKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDcKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDgKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGJ1cm5lZCkKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAwCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTAKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UobG9ja2VkKQogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDEKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoZ2VuZXJpYykKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMAogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMgogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OS0xMDEKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTktMTAyCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMwogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICAvLyAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAtIGdlbmVyaWNfYmFsYW5jZQogICAgc3dhcAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OC0xMDQKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", - "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMAogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNi0zNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MC01MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjAtNjEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2MgogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY1CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjcKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2OQogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzM6CiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2My03MgogICAgLy8gIyBFZmZlY3RzCiAgICAvLyBtYXRjaCBsYWJlbDoKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMjoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY2CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV9uZXh0QDU6CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdWludDY0OgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NC03NQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgLy8gZGVmIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoc2VsZiwgYXNzZXRfaWQ6IFVJbnQ2NCkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICBieXRlICIiCiAgICBkdXBuIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI3CiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzEKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEgZXhpc3RzCiAgICBsZW4KICAgIGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBBZGRyZXNzIGxlbmd0aCBpcyAzMiBieXRlcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg4CiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIGdlbmVyaWMgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODktOTAKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5LTkwCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQtOTUKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NQogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkzCiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAwCiAgICAvLyBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgYnVybmVkLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2CiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDUKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNAogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAxCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDYKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTAKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTEKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNAogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE0LTExNgogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQtMTE3CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTgKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEzLTExOQogICAgLy8gcmV0dXJuICgKICAgIC8vICAgICBhc3NldC50b3RhbAogICAgLy8gICAgIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAgICAgLSBidXJuZWRfYmFsYW5jZQogICAgLy8gICAgIC0gbG9ja2VkX2JhbGFuY2UKICAgIC8vICAgICAtIGdlbmVyaWNfYmFsYW5jZQogICAgLy8gKQogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5Ll9faW5pdF9fKCkgLT4gdm9pZDoKX19pbml0X186CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIzCiAgICAvLyBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKICAgIHByb3RvIDAgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICBpbnQgMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI2LTI4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjktMzEKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMzCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIGJ5dGUgImdlbmVyaWMiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzItMzQKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIK", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" }, "state": { "global": { @@ -38,17 +38,17 @@ "type": "uint64", "key": "asset_id" }, - "burned": { + "not_circulating_label_1": { "type": "bytes", "key": "burned" }, - "generic": { + "not_circulating_label_2": { "type": "bytes", - "key": "generic" + "key": "locked" }, - "locked": { + "not_circulating_label_3": { "type": "bytes", - "key": "locked" + "key": "generic" } }, "reserved": {} @@ -87,7 +87,7 @@ { "type": "string", "name": "label", - "desc": "Label selector (\"burned\", \"locked\", \"generic\")" + "desc": "Not-circulating label selector" } ], "returns": { 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 index 85bce243d..ca497c008 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.teal +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.clear.teal @@ -1,7 +1,7 @@ #pragma version 10 smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program: - // smart_contracts/circulating_supply/contract.py:11 + // smart_contracts/circulating_supply/contract.py:20 // class CirculatingSupply(ARC4Contract): int 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 index 72bf4edba..b10ee3044 100644 --- 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 @@ -41,8 +41,8 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzUKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1OQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMQogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMS0yMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAtMzEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwLTMxCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMC0zMQogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMyLTMzCiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNS0zNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE1LTE2CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NwogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUwCiAgICAvLyBjYXNlIGNmZy5CVVJORUQ6CiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjUyCiAgICAvLyBjYXNlIGNmZy5MT0NLRUQ6CiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBjYXNlIGNmZy5HRU5FUklDOgogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDgtNTcKICAgIC8vICMgRWZmZWN0cwogICAgLy8gbWF0Y2ggbGFiZWw6CiAgICAvLyAgICAgY2FzZSBjZmcuQlVSTkVEOgogICAgLy8gICAgICAgICBzZWxmLmJ1cm5lZCA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5MT0NLRUQ6CiAgICAvLyAgICAgICAgIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgLy8gICAgIGNhc2UgY2ZnLkdFTkVSSUM6CiAgICAvLyAgICAgICAgIHNlbGYuZ2VuZXJpYyA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTcKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNwogICAgLy8gc2VsZi5idXJuZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYuYnVybmVkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYubG9ja2VkID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5nZW5lcmljID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlX25leHRANToKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShhc3NldF9pZDogdWludDY0KSAtPiB1aW50NjQ6CmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICAvLyBkZWYgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseShzZWxmLCBhc3NldF9pZDogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byAxIDEKICAgIGJ5dGUgIiIKICAgIGR1cG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MQogICAgLy8gYnVybmVkID0gQWNjb3VudChzZWxmLmJ1cm5lZC5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYnVybmVkIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGxvY2tlZCA9IEFjY291bnQoc2VsZi5sb2NrZWQuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxvY2tlZCBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjczCiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLmdlbmVyaWMuYnl0ZXMpCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOQogICAgLy8gc2VsZi5nZW5lcmljID0gQWRkcmVzcygpCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MwogICAgLy8gZ2VuZXJpYyA9IEFjY291bnQoc2VsZi5nZW5lcmljLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5nZW5lcmljIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQtNzUKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNS0xNgogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc0LTc1CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzktODAKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MAogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4MQogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODUKICAgIC8vIGlmIGJ1cm5lZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBidXJuZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgMwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDYKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDcKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDgKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGJ1cm5lZCkKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAwCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTAKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UobG9ja2VkKQogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDEKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50IDAKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoZ2VuZXJpYykKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMAogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMgogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OS0xMDEKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgZnJhbWVfZGlnIDAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTktMTAyCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk5LTEwMwogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICAvLyAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAtIGdlbmVyaWNfYmFsYW5jZQogICAgc3dhcAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OC0xMDQKICAgIC8vIHJldHVybiAoCiAgICAvLyAgICAgYXNzZXQudG90YWwKICAgIC8vICAgICAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gICAgIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vICAgICAtIGxvY2tlZF9iYWxhbmNlCiAgICAvLyAgICAgLSBnZW5lcmljX2JhbGFuY2UKICAgIC8vICkKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5fX2luaXRfXygpIC0+IHZvaWQ6Cl9faW5pdF9fOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxNAogICAgLy8gZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTUtMTYKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgaW50IDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjE3CiAgICAvLyBzZWxmLmJ1cm5lZCA9IEFkZHJlc3MoKQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxOAogICAgLy8gc2VsZi5sb2NrZWQgPSBBZGRyZXNzKCkKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTkKICAgIC8vIHNlbGYuZ2VuZXJpYyA9IEFkZHJlc3MoKQogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", - "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMAogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNi0zNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MC01MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjAtNjEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2MgogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY1CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjcKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2OQogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzM6CiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2My03MgogICAgLy8gIyBFZmZlY3RzCiAgICAvLyBtYXRjaCBsYWJlbDoKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMjoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY2CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV9uZXh0QDU6CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdWludDY0OgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NC03NQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgLy8gZGVmIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoc2VsZiwgYXNzZXRfaWQ6IFVJbnQ2NCkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICBieXRlICIiCiAgICBkdXBuIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI3CiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzEKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEgZXhpc3RzCiAgICBsZW4KICAgIGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBBZGRyZXNzIGxlbmd0aCBpcyAzMiBieXRlcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg4CiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIGdlbmVyaWMgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODktOTAKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5LTkwCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQtOTUKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NQogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkzCiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAwCiAgICAvLyBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgYnVybmVkLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2CiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDUKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNAogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAxCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDYKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTAKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTEKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNAogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE0LTExNgogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQtMTE3CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTgKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEzLTExOQogICAgLy8gcmV0dXJuICgKICAgIC8vICAgICBhc3NldC50b3RhbAogICAgLy8gICAgIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAgICAgLSBidXJuZWRfYmFsYW5jZQogICAgLy8gICAgIC0gbG9ja2VkX2JhbGFuY2UKICAgIC8vICAgICAtIGdlbmVyaWNfYmFsYW5jZQogICAgLy8gKQogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5Ll9faW5pdF9fKCkgLT4gdm9pZDoKX19pbml0X186CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIzCiAgICAvLyBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKICAgIHByb3RvIDAgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICBpbnQgMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI2LTI4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjktMzEKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMzCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIGJ5dGUgImdlbmVyaWMiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzItMzQKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIK", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" }, "state": { "global": { @@ -61,17 +61,17 @@ "type": "uint64", "key": "asset_id" }, - "burned": { + "not_circulating_label_1": { "type": "bytes", "key": "burned" }, - "generic": { + "not_circulating_label_2": { "type": "bytes", - "key": "generic" + "key": "locked" }, - "locked": { + "not_circulating_label_3": { "type": "bytes", - "key": "locked" + "key": "generic" } }, "reserved": {} @@ -109,7 +109,7 @@ { "type": "string", "name": "label", - "desc": "Label selector (\"burned\", \"locked\", \"generic\")" + "desc": "Not-circulating label selector" } ], "returns": { @@ -232,7 +232,7 @@ class SetNotCirculatingAddressArgs(_ArgsBase[None]): address: str """Address to assign to the label to""" label: str - """Label selector ("burned", "locked", "generic")""" + """Not-circulating label selector""" @staticmethod def method() -> str: @@ -275,9 +275,9 @@ def as_hex(self) -> str: class GlobalState: def __init__(self, data: dict[bytes, bytes | int]): self.asset_id = typing.cast(int, data.get(b"asset_id")) - self.burned = ByteReader(typing.cast(bytes, data.get(b"burned"))) - self.generic = ByteReader(typing.cast(bytes, data.get(b"generic"))) - self.locked = ByteReader(typing.cast(bytes, data.get(b"locked"))) + self.not_circulating_label_1 = ByteReader(typing.cast(bytes, data.get(b"burned"))) + self.not_circulating_label_2 = ByteReader(typing.cast(bytes, data.get(b"locked"))) + self.not_circulating_label_3 = ByteReader(typing.cast(bytes, data.get(b"generic"))) @dataclasses.dataclass(kw_only=True) @@ -348,7 +348,7 @@ def set_not_circulating_address( Adds a call to `set_not_circulating_address(address,string)void` ABI method :param str address: Address to assign to the label to - :param str label: Label selector ("burned", "locked", "generic") + :param str label: Not-circulating label selector :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters :returns Composer: This Composer instance""" @@ -592,7 +592,7 @@ def set_not_circulating_address( Calls `set_not_circulating_address(address,string)void` ABI method :param str address: Address to assign to the label to - :param str label: Label selector ("burned", "locked", "generic") + :param str label: Not-circulating label selector :param algokit_utils.TransactionParameters transaction_parameters: (optional) Additional transaction parameters :returns algokit_utils.ABITransactionResponse[None]: The result of the transaction""" diff --git a/assets/arc-0062/smart_contracts/circulating_supply/config.py b/assets/arc-0062/smart_contracts/circulating_supply/config.py index f407fdb1c..b1885f911 100644 --- a/assets/arc-0062/smart_contracts/circulating_supply/config.py +++ b/assets/arc-0062/smart_contracts/circulating_supply/config.py @@ -1,6 +1,6 @@ from typing import Final # Roles -BURNED: Final[str] = "burned" -LOCKED: Final[str] = "locked" -GENERIC: Final[str] = "generic" +NOT_CIRCULATING_LABEL_1: Final[str] = "burned" +NOT_CIRCULATING_LABEL_2: Final[str] = "locked" +NOT_CIRCULATING_LABEL_3: Final[str] = "generic" diff --git a/assets/arc-0062/smart_contracts/circulating_supply/contract.py b/assets/arc-0062/smart_contracts/circulating_supply/contract.py index ee6c72954..c08891e39 100644 --- a/assets/arc-0062/smart_contracts/circulating_supply/contract.py +++ b/assets/arc-0062/smart_contracts/circulating_supply/contract.py @@ -1,6 +1,15 @@ # ruff: noqa: B011 -from algopy import Account, ARC4Contract, Asset, Global, String, Txn, UInt64 +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 @@ -14,9 +23,15 @@ class CirculatingSupply(ARC4Contract): def __init__(self) -> None: # Global State self.asset_id = UInt64() - self.burned = Address() - self.locked = Address() - self.generic = Address() + 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: @@ -39,7 +54,7 @@ def set_not_circulating_address(self, address: Address, label: String) -> None: Args: address: Address to assign to the label to - label: Label selector ("burned", "locked", "generic") + label: Not-circulating label selector """ asset = Asset(self.asset_id) # Preconditions @@ -47,12 +62,12 @@ def set_not_circulating_address(self, address: Address, label: String) -> None: assert Account(address.bytes).is_opted_in(asset), err.NOT_OPTED_IN # Effects match label: - case cfg.BURNED: - self.burned = address - case cfg.LOCKED: - self.locked = address - case cfg.GENERIC: - self.generic = address + 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 @@ -68,9 +83,9 @@ def arc62_get_circulating_supply(self, asset_id: UInt64) -> UInt64: ASA circulating supply """ asset = Asset(asset_id) - burned = Account(self.burned.bytes) - locked = Account(self.locked.bytes) - generic = Account(self.generic.bytes) + burned = Account(self.not_circulating_label_1.value.bytes) + locked = Account(self.not_circulating_label_2.value.bytes) + generic = Account(self.not_circulating_label_3.value.bytes) # Preconditions assert asset_id == self.asset_id, err.INVALID_ASSET_ID # Effects diff --git a/assets/arc-0062/tests/conftest.py b/assets/arc-0062/tests/conftest.py index 06293b609..27d2b5ab1 100644 --- a/assets/arc-0062/tests/conftest.py +++ b/assets/arc-0062/tests/conftest.py @@ -25,9 +25,9 @@ INITIAL_FUNDS = 100_000_000 ASA_TOTAL = 1000 RESERVE_BALANCE = 420 -BURNED_BALANCE = 69 -LOCKED_BALANCE = 42 -GENERIC_BALANCE = 4 +NOT_CIRCULATING_BALANCE_1 = 69 +NOT_CIRCULATING_BALANCE_2 = 42 +NOT_CIRCULATING_BALANCE_3 = 4 def get_asset_balance( @@ -131,7 +131,7 @@ def asset_reserve(algorand_client: AlgorandClient) -> AddressAndSigner: @pytest.fixture(scope="session") -def asset_burning(algorand_client: AlgorandClient) -> AddressAndSigner: +def not_circulating_address_1(algorand_client: AlgorandClient) -> AddressAndSigner: acct = algorand_client.account.random() ensure_funded( @@ -145,7 +145,7 @@ def asset_burning(algorand_client: AlgorandClient) -> AddressAndSigner: @pytest.fixture(scope="session") -def asset_locking(algorand_client: AlgorandClient) -> AddressAndSigner: +def not_circulating_address_2(algorand_client: AlgorandClient) -> AddressAndSigner: acct = algorand_client.account.random() ensure_funded( @@ -159,7 +159,7 @@ def asset_locking(algorand_client: AlgorandClient) -> AddressAndSigner: @pytest.fixture(scope="session") -def asset_generic_not_circulating(algorand_client: AlgorandClient) -> AddressAndSigner: +def not_circulating_address_3(algorand_client: AlgorandClient) -> AddressAndSigner: acct = algorand_client.account.random() ensure_funded( @@ -222,16 +222,16 @@ def reserve_with_balance( @pytest.fixture(scope="function") -def burning_with_balance( +def not_circulating_balance_1( algorand_client: AlgorandClient, asset_creator: AddressAndSigner, - asset_burning: AddressAndSigner, + not_circulating_address_1: AddressAndSigner, asset: int, ) -> AddressAndSigner: algorand_client.send.asset_opt_in( AssetOptInParams( - sender=asset_burning.address, - signer=asset_burning.signer, + sender=not_circulating_address_1.address, + signer=not_circulating_address_1.signer, asset_id=asset, ) ) @@ -240,28 +240,28 @@ def burning_with_balance( sender=asset_creator.address, signer=asset_creator.signer, asset_id=asset, - amount=BURNED_BALANCE, - receiver=asset_burning.address, + amount=NOT_CIRCULATING_BALANCE_1, + receiver=not_circulating_address_1.address, ) ) assert ( - get_asset_balance(algorand_client, asset_burning.address, asset) - == BURNED_BALANCE + get_asset_balance(algorand_client, not_circulating_address_1.address, asset) + == NOT_CIRCULATING_BALANCE_1 ) - return asset_burning + return not_circulating_address_1 @pytest.fixture(scope="function") -def locking_with_balance( +def not_circulating_balance_2( algorand_client: AlgorandClient, asset_creator: AddressAndSigner, - asset_locking: AddressAndSigner, + not_circulating_address_2: AddressAndSigner, asset: int, ) -> AddressAndSigner: algorand_client.send.asset_opt_in( AssetOptInParams( - sender=asset_locking.address, - signer=asset_locking.signer, + sender=not_circulating_address_2.address, + signer=not_circulating_address_2.signer, asset_id=asset, ) ) @@ -270,28 +270,28 @@ def locking_with_balance( sender=asset_creator.address, signer=asset_creator.signer, asset_id=asset, - amount=LOCKED_BALANCE, - receiver=asset_locking.address, + amount=NOT_CIRCULATING_BALANCE_2, + receiver=not_circulating_address_2.address, ) ) assert ( - get_asset_balance(algorand_client, asset_locking.address, asset) - == LOCKED_BALANCE + get_asset_balance(algorand_client, not_circulating_address_2.address, asset) + == NOT_CIRCULATING_BALANCE_2 ) - return asset_locking + return not_circulating_address_2 @pytest.fixture(scope="function") -def generic_not_circulating_with_balance( +def not_circulating_balance_3( algorand_client: AlgorandClient, asset_creator: AddressAndSigner, - asset_generic_not_circulating: AddressAndSigner, + not_circulating_address_3: AddressAndSigner, asset: int, ) -> AddressAndSigner: algorand_client.send.asset_opt_in( AssetOptInParams( - sender=asset_generic_not_circulating.address, - signer=asset_generic_not_circulating.signer, + sender=not_circulating_address_3.address, + signer=not_circulating_address_3.signer, asset_id=asset, ) ) @@ -300,15 +300,15 @@ def generic_not_circulating_with_balance( sender=asset_creator.address, signer=asset_creator.signer, asset_id=asset, - amount=GENERIC_BALANCE, - receiver=asset_generic_not_circulating.address, + amount=NOT_CIRCULATING_BALANCE_3, + receiver=not_circulating_address_3.address, ) ) assert ( - get_asset_balance(algorand_client, asset_generic_not_circulating.address, asset) - == GENERIC_BALANCE + get_asset_balance(algorand_client, not_circulating_address_3.address, asset) + == NOT_CIRCULATING_BALANCE_3 ) - return asset_generic_not_circulating + return not_circulating_address_3 @pytest.fixture(scope="function") diff --git a/assets/arc-0062/tests/test_deploy.py b/assets/arc-0062/tests/test_deploy.py index c9e843473..e537b3581 100644 --- a/assets/arc-0062/tests/test_deploy.py +++ b/assets/arc-0062/tests/test_deploy.py @@ -10,6 +10,6 @@ def test_pass_create(circulating_supply_client: CirculatingSupplyClient) -> None state = circulating_supply_client.get_global_state() assert state.asset_id == 0 - assert encode_address(state.burned.as_bytes) == ZERO_ADDRESS # type: ignore - assert encode_address(state.locked.as_bytes) == ZERO_ADDRESS # type: ignore - assert encode_address(state.generic.as_bytes) == ZERO_ADDRESS # type: ignore + assert encode_address(state.not_circulating_label_1.as_bytes) == ZERO_ADDRESS # type: ignore + assert encode_address(state.not_circulating_label_2.as_bytes) == ZERO_ADDRESS # type: ignore + assert encode_address(state.not_circulating_label_3.as_bytes) == ZERO_ADDRESS # type: ignore diff --git a/assets/arc-0062/tests/test_get_circulating_supply.py b/assets/arc-0062/tests/test_get_circulating_supply.py index 4c63a7913..799958b44 100644 --- a/assets/arc-0062/tests/test_get_circulating_supply.py +++ b/assets/arc-0062/tests/test_get_circulating_supply.py @@ -20,35 +20,35 @@ def test_pass_get_circulating_supply( asset_manager: AddressAndSigner, asset: int, reserve_with_balance: AddressAndSigner, - burning_with_balance: AddressAndSigner, - locking_with_balance: AddressAndSigner, - generic_not_circulating_with_balance: AddressAndSigner, + not_circulating_balance_1: AddressAndSigner, + not_circulating_balance_2: AddressAndSigner, + not_circulating_balance_3: AddressAndSigner, ) -> None: total: int = algorand_client.client.algod.asset_info(asset)["params"]["total"] # type: ignore reserve_balance: int = get_asset_balance( algorand_client, reserve_with_balance.address, asset ) - burned_balance: int = get_asset_balance( - algorand_client, burning_with_balance.address, asset + nc_balance_1: int = get_asset_balance( + algorand_client, not_circulating_balance_1.address, asset ) - locked_balance: int = get_asset_balance( - algorand_client, locking_with_balance.address, asset + nc_balance_2: int = get_asset_balance( + algorand_client, not_circulating_balance_2.address, asset ) - generic_balance: int = get_asset_balance( - algorand_client, generic_not_circulating_with_balance.address, asset + nc_balance_3: int = get_asset_balance( + algorand_client, not_circulating_balance_3.address, asset ) print("\nASA Total: ", total) print("Reserve Balance: ", reserve_balance) - print("Burned Balance: ", burned_balance) - print("Locked Balance: ", locked_balance) - print("Generic Not-Circulating Balance: ", generic_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) not_circulating_addresses = [ reserve_with_balance.address, - burning_with_balance.address, - locking_with_balance.address, - generic_not_circulating_with_balance.address, + not_circulating_balance_1.address, + not_circulating_balance_2.address, + not_circulating_balance_3.address, ] circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( @@ -62,14 +62,14 @@ def test_pass_get_circulating_supply( assert circulating_supply == total - reserve_balance asset_circulating_supply_client.set_not_circulating_address( - address=burning_with_balance.address, - label=cfg.BURNED, + address=not_circulating_balance_1.address, + label=cfg.NOT_CIRCULATING_LABEL_1, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[burning_with_balance.address], + accounts=[not_circulating_balance_1.address], ), ) circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( @@ -80,17 +80,17 @@ def test_pass_get_circulating_supply( accounts=not_circulating_addresses, ), ).return_value - assert circulating_supply == total - reserve_balance - burned_balance + assert circulating_supply == total - reserve_balance - nc_balance_1 asset_circulating_supply_client.set_not_circulating_address( - address=locking_with_balance.address, - label=cfg.LOCKED, + address=not_circulating_balance_2.address, + label=cfg.NOT_CIRCULATING_LABEL_2, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[locking_with_balance.address], + accounts=[not_circulating_balance_2.address], ), ) circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( @@ -101,19 +101,17 @@ def test_pass_get_circulating_supply( accounts=not_circulating_addresses, ), ).return_value - assert ( - circulating_supply == total - reserve_balance - burned_balance - locked_balance - ) + assert circulating_supply == total - reserve_balance - nc_balance_1 - nc_balance_2 asset_circulating_supply_client.set_not_circulating_address( - address=generic_not_circulating_with_balance.address, - label=cfg.GENERIC, + address=not_circulating_balance_3.address, + label=cfg.NOT_CIRCULATING_LABEL_3, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[generic_not_circulating_with_balance.address], + accounts=[not_circulating_balance_3.address], ), ) circulating_supply = asset_circulating_supply_client.arc62_get_circulating_supply( @@ -126,7 +124,7 @@ def test_pass_get_circulating_supply( ).return_value assert ( circulating_supply - == total - reserve_balance - burned_balance - locked_balance - generic_balance + == total - reserve_balance - nc_balance_1 - nc_balance_2 - nc_balance_3 ) print("Circulating Supply: ", circulating_supply) @@ -163,27 +161,27 @@ def test_pass_closed_address( asset_creator: AddressAndSigner, asset_manager: AddressAndSigner, reserve_with_balance: AddressAndSigner, - burning_with_balance: AddressAndSigner, + not_circulating_balance_1: AddressAndSigner, asset: int, ) -> None: total: int = algorand_client.client.algod.asset_info(asset)["params"]["total"] # type: ignore asset_circulating_supply_client.set_not_circulating_address( - address=burning_with_balance.address, - label=cfg.BURNED, + address=not_circulating_balance_1.address, + label=cfg.NOT_CIRCULATING_LABEL_1, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[burning_with_balance.address], + accounts=[not_circulating_balance_1.address], ), ) algorand_client.send.asset_transfer( AssetTransferParams( - sender=burning_with_balance.address, - signer=burning_with_balance.signer, + sender=not_circulating_balance_1.address, + signer=not_circulating_balance_1.signer, asset_id=asset, amount=0, receiver=asset_creator.address, @@ -207,7 +205,7 @@ def test_pass_closed_address( transaction_parameters=OnCompleteCallParameters( # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[reserve_with_balance.address, burning_with_balance.address], + accounts=[reserve_with_balance.address, not_circulating_balance_1.address], ), ).return_value assert circulating_supply == total diff --git a/assets/arc-0062/tests/test_set_not_circulating_address.py b/assets/arc-0062/tests/test_set_not_circulating_address.py index a33315e61..60e227a0e 100644 --- a/assets/arc-0062/tests/test_set_not_circulating_address.py +++ b/assets/arc-0062/tests/test_set_not_circulating_address.py @@ -14,72 +14,69 @@ def test_pass_set_not_circulating_address( asset_circulating_supply_client: CirculatingSupplyClient, asset_manager: AddressAndSigner, asset: int, - burning_with_balance: AddressAndSigner, - locking_with_balance: AddressAndSigner, - generic_not_circulating_with_balance: AddressAndSigner, + not_circulating_balance_1: AddressAndSigner, + not_circulating_balance_2: AddressAndSigner, + not_circulating_balance_3: AddressAndSigner, ) -> None: asset_circulating_supply_client.set_not_circulating_address( - address=burning_with_balance.address, - label=cfg.BURNED, + address=not_circulating_balance_1.address, + label=cfg.NOT_CIRCULATING_LABEL_1, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[burning_with_balance.address], + accounts=[not_circulating_balance_1.address], ), ) asset_circulating_supply_client.set_not_circulating_address( - address=locking_with_balance.address, - label=cfg.LOCKED, + address=not_circulating_balance_2.address, + label=cfg.NOT_CIRCULATING_LABEL_2, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[locking_with_balance.address], + accounts=[not_circulating_balance_2.address], ), ) asset_circulating_supply_client.set_not_circulating_address( - address=generic_not_circulating_with_balance.address, - label=cfg.GENERIC, + address=not_circulating_balance_3.address, + label=cfg.NOT_CIRCULATING_LABEL_3, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[generic_not_circulating_with_balance.address], + accounts=[not_circulating_balance_3.address], ), ) state = asset_circulating_supply_client.get_global_state() - assert encode_address(state.burned.as_bytes) == burning_with_balance.address # type: ignore - assert encode_address(state.locked.as_bytes) == locking_with_balance.address # type: ignore - assert ( - encode_address(state.generic.as_bytes) # type: ignore - == generic_not_circulating_with_balance.address - ) + assert encode_address(state.not_circulating_label_1.as_bytes) == not_circulating_balance_1.address # type: ignore + assert encode_address(state.not_circulating_label_2.as_bytes) == not_circulating_balance_2.address # type: ignore + assert encode_address(state.not_circulating_label_3.as_bytes) == not_circulating_balance_3.address # type: ignore def test_fail_unauthorized( asset_circulating_supply_client: CirculatingSupplyClient, asset_creator: AddressAndSigner, asset: int, - burning_with_balance: AddressAndSigner, + not_circulating_balance_1: AddressAndSigner, ) -> None: with pytest.raises(LogicError, match=err.UNAUTHORIZED): # type: ignore asset_circulating_supply_client.set_not_circulating_address( - address=burning_with_balance.address, - label=cfg.BURNED, + address=not_circulating_balance_1.address, + label=cfg.NOT_CIRCULATING_LABEL_1, transaction_parameters=OnCompleteCallParameters( sender=asset_creator.address, signer=asset_creator.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[burning_with_balance.address], + accounts=[not_circulating_balance_1.address], ), ) @@ -92,7 +89,7 @@ def test_fail_not_opted_in( with pytest.raises(LogicError, match=err.NOT_OPTED_IN): # type: ignore asset_circulating_supply_client.set_not_circulating_address( address=asset_manager.address, - label=cfg.BURNED, + label=cfg.NOT_CIRCULATING_LABEL_1, transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, @@ -107,17 +104,17 @@ def test_fail_invalid_label( asset_circulating_supply_client: CirculatingSupplyClient, asset_manager: AddressAndSigner, asset: int, - burning_with_balance: AddressAndSigner, + not_circulating_balance_1: AddressAndSigner, ) -> None: with pytest.raises(LogicError, match=err.INVALID_LABEL): # type: ignore asset_circulating_supply_client.set_not_circulating_address( - address=burning_with_balance.address, + address=not_circulating_balance_1.address, label="spam", transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, # TODO: Foreign resources should be auto-populated foreign_assets=[asset], - accounts=[burning_with_balance.address], + accounts=[not_circulating_balance_1.address], ), ) From e3259466f0c7df98565d005c7ae988fd37d87755 Mon Sep 17 00:00:00 2001 From: cusma Date: Fri, 19 Jul 2024 12:38:23 +0200 Subject: [PATCH 20/60] feat: generic labels in ref. implementation --- .../CirculatingSupply.approval.teal | 83 +++++++++++-------- .../CirculatingSupply.arc32.json | 2 +- .../circulating_supply_client.py | 2 +- .../circulating_supply/contract.py | 33 ++++---- .../tests/test_set_not_circulating_address.py | 2 +- 5 files changed, 70 insertions(+), 52 deletions(-) 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 index 694d74d40..714f18a4e 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.approval.teal @@ -247,13 +247,13 @@ arc62_get_circulating_supply: byte "" dupn 2 // smart_contracts/circulating_supply/contract.py:86 - // burned = Account(self.not_circulating_label_1.value.bytes) + // not_circulating_1 = Account(self.not_circulating_label_1.value.bytes) int 0 // smart_contracts/circulating_supply/contract.py:27 // Address(), key=cfg.NOT_CIRCULATING_LABEL_1 byte "burned" // smart_contracts/circulating_supply/contract.py:86 - // burned = Account(self.not_circulating_label_1.value.bytes) + // not_circulating_1 = Account(self.not_circulating_label_1.value.bytes) app_global_get_ex swap dup @@ -264,13 +264,13 @@ arc62_get_circulating_supply: == assert // Address length is 32 bytes // smart_contracts/circulating_supply/contract.py:87 - // locked = Account(self.not_circulating_label_2.value.bytes) + // not_circulating_2 = Account(self.not_circulating_label_2.value.bytes) int 0 // smart_contracts/circulating_supply/contract.py:30 // Address(), key=cfg.NOT_CIRCULATING_LABEL_2 byte "locked" // smart_contracts/circulating_supply/contract.py:87 - // locked = Account(self.not_circulating_label_2.value.bytes) + // not_circulating_2 = Account(self.not_circulating_label_2.value.bytes) app_global_get_ex swap dup @@ -281,13 +281,13 @@ arc62_get_circulating_supply: == assert // Address length is 32 bytes // smart_contracts/circulating_supply/contract.py:88 - // generic = Account(self.not_circulating_label_3.value.bytes) + // not_circulating_3 = Account(self.not_circulating_label_3.value.bytes) int 0 // smart_contracts/circulating_supply/contract.py:33 // Address(), key=cfg.NOT_CIRCULATING_LABEL_3 byte "generic" // smart_contracts/circulating_supply/contract.py:88 - // generic = Account(self.not_circulating_label_3.value.bytes) + // not_circulating_3 = Account(self.not_circulating_label_3.value.bytes) app_global_get_ex swap dup @@ -354,11 +354,16 @@ arc62_get_circulating_supply_ternary_false@3: arc62_get_circulating_supply_ternary_merge@4: // smart_contracts/circulating_supply/contract.py:100 - // if burned == Global.zero_address or not burned.is_opted_in(asset) + // if not_circulating_1 == Global.zero_address frame_dig 3 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@6 + // smart_contracts/circulating_supply/contract.py:101 + // or not not_circulating_1.is_opted_in(asset) frame_dig 3 frame_dig -1 asset_holding_get AssetBalance @@ -373,8 +378,8 @@ arc62_get_circulating_supply_ternary_true@6: b arc62_get_circulating_supply_ternary_merge@8 arc62_get_circulating_supply_ternary_false@7: - // smart_contracts/circulating_supply/contract.py:101 - // else asset.balance(burned) + // smart_contracts/circulating_supply/contract.py:102 + // else asset.balance(not_circulating_1) frame_dig 3 frame_dig -1 asset_holding_get AssetBalance @@ -382,12 +387,17 @@ arc62_get_circulating_supply_ternary_false@7: frame_bury 0 arc62_get_circulating_supply_ternary_merge@8: - // smart_contracts/circulating_supply/contract.py:105 - // if locked == Global.zero_address or not locked.is_opted_in(asset) + // smart_contracts/circulating_supply/contract.py:106 + // if not_circulating_2 == Global.zero_address frame_dig 4 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@10 + // smart_contracts/circulating_supply/contract.py:107 + // or not not_circulating_2.is_opted_in(asset) frame_dig 4 frame_dig -1 asset_holding_get AssetBalance @@ -395,15 +405,15 @@ arc62_get_circulating_supply_ternary_merge@8: bnz arc62_get_circulating_supply_ternary_false@11 arc62_get_circulating_supply_ternary_true@10: - // smart_contracts/circulating_supply/contract.py:104 + // smart_contracts/circulating_supply/contract.py:105 // UInt64(0) int 0 frame_bury 1 b arc62_get_circulating_supply_ternary_merge@12 arc62_get_circulating_supply_ternary_false@11: - // smart_contracts/circulating_supply/contract.py:106 - // else asset.balance(locked) + // smart_contracts/circulating_supply/contract.py:108 + // else asset.balance(not_circulating_2) frame_dig 4 frame_dig -1 asset_holding_get AssetBalance @@ -411,12 +421,17 @@ arc62_get_circulating_supply_ternary_false@11: frame_bury 1 arc62_get_circulating_supply_ternary_merge@12: - // smart_contracts/circulating_supply/contract.py:110 - // if generic == Global.zero_address or not generic.is_opted_in(asset) + // smart_contracts/circulating_supply/contract.py:112 + // if not_circulating_3 == Global.zero_address frame_dig 5 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@14 + // smart_contracts/circulating_supply/contract.py:113 + // or not not_circulating_3.is_opted_in(asset) frame_dig 5 frame_dig -1 asset_holding_get AssetBalance @@ -424,58 +439,58 @@ arc62_get_circulating_supply_ternary_merge@12: bnz arc62_get_circulating_supply_ternary_false@15 arc62_get_circulating_supply_ternary_true@14: - // smart_contracts/circulating_supply/contract.py:109 + // smart_contracts/circulating_supply/contract.py:111 // UInt64(0) int 0 b arc62_get_circulating_supply_ternary_merge@16 arc62_get_circulating_supply_ternary_false@15: - // smart_contracts/circulating_supply/contract.py:111 - // else asset.balance(generic) + // smart_contracts/circulating_supply/contract.py:114 + // else asset.balance(not_circulating_3) frame_dig 5 frame_dig -1 asset_holding_get AssetBalance assert // account opted into asset arc62_get_circulating_supply_ternary_merge@16: - // smart_contracts/circulating_supply/contract.py:114 + // smart_contracts/circulating_supply/contract.py:117 // asset.total frame_dig -1 asset_params_get AssetTotal assert // asset exists - // smart_contracts/circulating_supply/contract.py:114-115 + // smart_contracts/circulating_supply/contract.py:117-118 // asset.total // - reserve_balance frame_dig 2 - - // smart_contracts/circulating_supply/contract.py:114-116 + // smart_contracts/circulating_supply/contract.py:117-119 // asset.total // - reserve_balance - // - burned_balance + // - not_circulating_balance_1 frame_dig 0 - - // smart_contracts/circulating_supply/contract.py:114-117 + // smart_contracts/circulating_supply/contract.py:117-120 // asset.total // - reserve_balance - // - burned_balance - // - locked_balance + // - not_circulating_balance_1 + // - not_circulating_balance_2 frame_dig 1 - - // smart_contracts/circulating_supply/contract.py:114-118 + // smart_contracts/circulating_supply/contract.py:117-121 // asset.total // - reserve_balance - // - burned_balance - // - locked_balance - // - generic_balance + // - not_circulating_balance_1 + // - not_circulating_balance_2 + // - not_circulating_balance_3 swap - - // smart_contracts/circulating_supply/contract.py:113-119 + // smart_contracts/circulating_supply/contract.py:116-122 // return ( // asset.total // - reserve_balance - // - burned_balance - // - locked_balance - // - generic_balance + // - not_circulating_balance_1 + // - not_circulating_balance_2 + // - not_circulating_balance_3 // ) frame_bury 0 retsub diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json index 8736a470b..e943f1bba 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json @@ -18,7 +18,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMAogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNi0zNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MC01MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjAtNjEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2MgogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY1CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjcKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2OQogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzM6CiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2My03MgogICAgLy8gIyBFZmZlY3RzCiAgICAvLyBtYXRjaCBsYWJlbDoKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMjoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY2CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV9uZXh0QDU6CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdWludDY0OgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NC03NQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgLy8gZGVmIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoc2VsZiwgYXNzZXRfaWQ6IFVJbnQ2NCkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICBieXRlICIiCiAgICBkdXBuIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI3CiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzEKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEgZXhpc3RzCiAgICBsZW4KICAgIGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBBZGRyZXNzIGxlbmd0aCBpcyAzMiBieXRlcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg4CiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIGdlbmVyaWMgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODktOTAKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5LTkwCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQtOTUKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NQogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkzCiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAwCiAgICAvLyBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgYnVybmVkLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2CiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDUKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNAogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAxCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDYKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTAKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTEKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNAogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE0LTExNgogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQtMTE3CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTgKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEzLTExOQogICAgLy8gcmV0dXJuICgKICAgIC8vICAgICBhc3NldC50b3RhbAogICAgLy8gICAgIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAgICAgLSBidXJuZWRfYmFsYW5jZQogICAgLy8gICAgIC0gbG9ja2VkX2JhbGFuY2UKICAgIC8vICAgICAtIGdlbmVyaWNfYmFsYW5jZQogICAgLy8gKQogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5Ll9faW5pdF9fKCkgLT4gdm9pZDoKX19pbml0X186CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIzCiAgICAvLyBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKICAgIHByb3RvIDAgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICBpbnQgMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI2LTI4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjktMzEKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMzCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIGJ5dGUgImdlbmVyaWMiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzItMzQKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIK", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMAogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNi0zNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MC01MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjAtNjEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2MgogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY1CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjcKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2OQogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzM6CiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2My03MgogICAgLy8gIyBFZmZlY3RzCiAgICAvLyBtYXRjaCBsYWJlbDoKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMjoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY2CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV9uZXh0QDU6CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdWludDY0OgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NC03NQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgLy8gZGVmIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoc2VsZiwgYXNzZXRfaWQ6IFVJbnQ2NCkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICBieXRlICIiCiAgICBkdXBuIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18xID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gbm90X2NpcmN1bGF0aW5nXzEgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODcKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18yID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbm90X2NpcmN1bGF0aW5nXzIgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18zID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18zID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMyBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5LTkwCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjQtMjUKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4OS05MAogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgYXNzZXRfaWQgPT0gc2VsZi5hc3NldF9pZCwgZXJyLklOVkFMSURfQVNTRVRfSUQKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIGZyYW1lX2RpZyAtMQogICAgPT0KICAgIGFzc2VydCAvLyBJbnZhbGlkIEFTQSBJRAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NAogICAgLy8gaWYgYXNzZXQucmVzZXJ2ZSA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0LTk1CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0UmVzZXJ2ZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5MwogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAyCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTYKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShhc3NldC5yZXNlcnZlKQogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0UmVzZXJ2ZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMAogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzEgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAwLTEwMQogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzEgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18xLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAxCiAgICAvLyBvciBub3Qgbm90X2NpcmN1bGF0aW5nXzEuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAyCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2Uobm90X2NpcmN1bGF0aW5nXzEpCiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNgogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzIgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgZnJhbWVfZGlnIDQKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA2LTEwNwogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzIgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18yLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18yLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBidXJ5IDEKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTEKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDUKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50IDAKICAgIGZyYW1lX2J1cnkgMQogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTIKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA4CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2Uobm90X2NpcmN1bGF0aW5nXzIpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTIKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18zID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExMi0xMTMKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18zID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBub3RfY2lyY3VsYXRpbmdfMy5pc19vcHRlZF9pbihhc3NldCkKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTMKICAgIC8vIG9yIG5vdCBub3RfY2lyY3VsYXRpbmdfMy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTExCiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShub3RfY2lyY3VsYXRpbmdfMykKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTcKICAgIC8vIGFzc2V0LnRvdGFsCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRUb3RhbAogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTE4CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAyCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNy0xMTkKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8xCiAgICBmcmFtZV9kaWcgMAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIwCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICBmcmFtZV9kaWcgMQogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIxCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICAvLyAtIG5vdF9jaXJjdWxhdGluZ19iYWxhbmNlXzMKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE2LTEyMgogICAgLy8gcmV0dXJuICgKICAgIC8vICAgICBhc3NldC50b3RhbAogICAgLy8gICAgIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAgICAgLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8xCiAgICAvLyAgICAgLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICAvLyAgICAgLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8zCiAgICAvLyApCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuX19pbml0X18oKSAtPiB2b2lkOgpfX2luaXRfXzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjMKICAgIC8vIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgogICAgcHJvdG8gMCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIGludCAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjYtMjgKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzEKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyOS0zMQogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMi0zNAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMyA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" }, "state": { 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 index b10ee3044..3f6dc67c6 100644 --- 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 @@ -41,7 +41,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMAogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNi0zNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MC01MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjAtNjEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2MgogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY1CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjcKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2OQogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzM6CiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2My03MgogICAgLy8gIyBFZmZlY3RzCiAgICAvLyBtYXRjaCBsYWJlbDoKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMjoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY2CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV9uZXh0QDU6CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdWludDY0OgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NC03NQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgLy8gZGVmIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoc2VsZiwgYXNzZXRfaWQ6IFVJbnQ2NCkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICBieXRlICIiCiAgICBkdXBuIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI3CiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzEKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIGJ1cm5lZCA9IEFjY291bnQoc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZS5ieXRlcykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEgZXhpc3RzCiAgICBsZW4KICAgIGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBBZGRyZXNzIGxlbmd0aCBpcyAzMiBieXRlcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbG9ja2VkID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg4CiAgICAvLyBnZW5lcmljID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIGdlbmVyaWMgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODktOTAKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID09IHNlbGYuYXNzZXRfaWQsIGVyci5JTlZBTElEX0FTU0VUX0lECiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5LTkwCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0X2lkIGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIEludmFsaWQgQVNBIElECiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFJlc2VydmUKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTQtOTUKICAgIC8vIGlmIGFzc2V0LnJlc2VydmUgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NQogICAgLy8gb3Igbm90IGFzc2V0LnJlc2VydmUuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDMKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjkzCiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NgogICAgLy8gZWxzZSBhc3NldC5iYWxhbmNlKGFzc2V0LnJlc2VydmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgZnJhbWVfYnVyeSAyCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAwCiAgICAvLyBpZiBidXJuZWQgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgYnVybmVkLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2CiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAxCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2UoYnVybmVkKQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CiAgICBmcmFtZV9idXJ5IDAKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDUKICAgIC8vIGlmIGxvY2tlZCA9PSBHbG9iYWwuemVyb19hZGRyZXNzIG9yIG5vdCBsb2NrZWQuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgNAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNAogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAxCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxMgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDYKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShsb2NrZWQpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTAKICAgIC8vIGlmIGdlbmVyaWMgPT0gR2xvYmFsLnplcm9fYWRkcmVzcyBvciBub3QgZ2VuZXJpYy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X3RydWVAMTQKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA5CiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTEKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShnZW5lcmljKQogICAgZnJhbWVfZGlnIDUKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBvcHRlZCBpbnRvIGFzc2V0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNAogICAgLy8gYXNzZXQudG90YWwKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTUKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE0LTExNgogICAgLy8gYXNzZXQudG90YWwKICAgIC8vIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAtIGJ1cm5lZF9iYWxhbmNlCiAgICBmcmFtZV9kaWcgMAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQtMTE3CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gYnVybmVkX2JhbGFuY2UKICAgIC8vIC0gbG9ja2VkX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNC0xMTgKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBidXJuZWRfYmFsYW5jZQogICAgLy8gLSBsb2NrZWRfYmFsYW5jZQogICAgLy8gLSBnZW5lcmljX2JhbGFuY2UKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTEzLTExOQogICAgLy8gcmV0dXJuICgKICAgIC8vICAgICBhc3NldC50b3RhbAogICAgLy8gICAgIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAgICAgLSBidXJuZWRfYmFsYW5jZQogICAgLy8gICAgIC0gbG9ja2VkX2JhbGFuY2UKICAgIC8vICAgICAtIGdlbmVyaWNfYmFsYW5jZQogICAgLy8gKQogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5Ll9faW5pdF9fKCkgLT4gdm9pZDoKX19pbml0X186CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIzCiAgICAvLyBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKICAgIHByb3RvIDAgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICBpbnQgMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZSAiYnVybmVkIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI2LTI4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjktMzEKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMzCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIGJ5dGUgImdlbmVyaWMiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzItMzQKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzMgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzMKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIK", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFwcHJvdmFsX3Byb2dyYW06CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fZW50cnlwb2ludEAyCiAgICBjYWxsc3ViIF9faW5pdF9fCgptYWluX2VudHJ5cG9pbnRAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAOQogICAgbWV0aG9kICJzZXRfYXNzZXQodWludDY0KXZvaWQiCiAgICBtZXRob2QgInNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzcyhhZGRyZXNzLHN0cmluZyl2b2lkIgogICAgbWV0aG9kICJhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5KHVpbnQ2NCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3NldF9hc3NldF9yb3V0ZUA0IG1haW5fc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3JvdXRlQDUgbWFpbl9hcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3JvdXRlQDYKICAgIGVyciAvLyByZWplY3QgdHJhbnNhY3Rpb24KCm1haW5fc2V0X2Fzc2V0X3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBpcyBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0X2Fzc2V0CiAgICBpbnQgMQogICAgcmV0dXJuCgptYWluX3NldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19yb3V0ZUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gaXMgbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MKICAgIGludCAxCiAgICByZXR1cm4KCm1haW5fYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGlzIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyMAogICAgLy8gY2xhc3MgQ2lyY3VsYXRpbmdTdXBwbHkoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzQKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGNhbGxzdWIgYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseQogICAgaXRvYgogICAgYnl0ZSAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50IDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjAKICAgIC8vIGNsYXNzIENpcmN1bGF0aW5nU3VwcGx5KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gcmVqZWN0IHRyYW5zYWN0aW9uCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGlzIGNyZWF0aW5nCiAgICBpbnQgMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfYXNzZXQoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0X2Fzc2V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozNi0zNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X2Fzc2V0KHNlbGYsIGFzc2V0X2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NDUtNDYKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciBhbmQgbm90IHNlbGYuYXNzZXRfaWQsIGVyci5VTkFVVEhPUklaRUQKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgID09CiAgICBieiBzZXRfYXNzZXRfYm9vbF9mYWxzZUAzCiAgICBpbnQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IGFzc2V0Lm1hbmFnZXIgYW5kIG5vdCBzZWxmLmFzc2V0X2lkLCBlcnIuVU5BVVRIT1JJWkVECiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRfaWQgZXhpc3RzCiAgICBibnogc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMwogICAgaW50IDEKICAgIGIgc2V0X2Fzc2V0X2Jvb2xfbWVyZ2VANAoKc2V0X2Fzc2V0X2Jvb2xfZmFsc2VAMzoKICAgIGludCAwCgpzZXRfYXNzZXRfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo0NS00NgogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBhc3NldC5tYW5hZ2VyIGFuZCBub3Qgc2VsZi5hc3NldF9pZCwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNC0yNQogICAgLy8gIyBHbG9iYWwgU3RhdGUKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBVSW50NjQoKQogICAgYnl0ZSAiYXNzZXRfaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjQ3LTQ4CiAgICAvLyAjIEVmZmVjdHMKICAgIC8vIHNlbGYuYXNzZXRfaWQgPSBhc3NldF9pZAogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNpcmN1bGF0aW5nX3N1cHBseS5jb250cmFjdC5DaXJjdWxhdGluZ1N1cHBseS5zZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3MoYWRkcmVzczogYnl0ZXMsIGxhYmVsOiBieXRlcykgLT4gdm9pZDoKc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo1MC01MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzKHNlbGYsIGFkZHJlc3M6IEFkZHJlc3MsIGxhYmVsOiBTdHJpbmcpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGludCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NTkKICAgIC8vIGFzc2V0ID0gQXNzZXQoc2VsZi5hc3NldF9pZCkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjAtNjEKICAgIC8vICMgUHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gYXNzZXQubWFuYWdlciwgZXJyLlVOQVVUSE9SSVpFRAogICAgdHhuIFNlbmRlcgogICAgc3dhcAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2MgogICAgLy8gYXNzZXJ0IEFjY291bnQoYWRkcmVzcy5ieXRlcykuaXNfb3B0ZWRfaW4oYXNzZXQpLCBlcnIuTk9UX09QVEVEX0lOCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gTm90IE9wdGVkLUluCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY1CiAgICAvLyBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIGJ5dGUgImJ1cm5lZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NjcKICAgIC8vIGNhc2UgY2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yOgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2OQogICAgLy8gY2FzZSBjZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzM6CiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo2My03MgogICAgLy8gIyBFZmZlY3RzCiAgICAvLyBtYXRjaCBsYWJlbDoKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMToKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMS52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMjoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMi52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIGNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMzoKICAgIC8vICAgICAgICAgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIC8vICAgICBjYXNlIF86CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGZyYW1lX2RpZyAtMQogICAgbWF0Y2ggc2V0X25vdF9jaXJjdWxhdGluZ19hZGRyZXNzX3N3aXRjaF9jYXNlXzBAMSBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyIHNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV8yQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6NzIKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLklOVkFMSURfTEFCRUwKICAgIGVyciAvLyBJbnZhbGlkIExhYmVsCgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMEAxOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY2CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMAogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8yCiAgICBieXRlICJsb2NrZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjY4CiAgICAvLyBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlID0gYWRkcmVzcwogICAgZnJhbWVfZGlnIC0yCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiBzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfbmV4dEA1CgpzZXRfbm90X2NpcmN1bGF0aW5nX2FkZHJlc3Nfc3dpdGNoX2Nhc2VfMkAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8zCiAgICBieXRlICJnZW5lcmljIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3MAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMy52YWx1ZSA9IGFkZHJlc3MKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKCnNldF9ub3RfY2lyY3VsYXRpbmdfYWRkcmVzc19zd2l0Y2hfY2FzZV9uZXh0QDU6CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdWludDY0OgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo3NC03NQogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgLy8gZGVmIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHkoc2VsZiwgYXNzZXRfaWQ6IFVJbnQ2NCkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICBieXRlICIiCiAgICBkdXBuIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODYKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18xID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjcKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMQogICAgYnl0ZSAiYnVybmVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NgogICAgLy8gbm90X2NpcmN1bGF0aW5nXzEgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8xIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODcKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18yID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzAKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgYnl0ZSAibG9ja2VkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4NwogICAgLy8gbm90X2NpcmN1bGF0aW5nXzIgPSBBY2NvdW50KHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzIudmFsdWUuYnl0ZXMpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8yIGV4aXN0cwogICAgbGVuCiAgICBpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18zID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6ODgKICAgIC8vIG5vdF9jaXJjdWxhdGluZ18zID0gQWNjb3VudChzZWxmLm5vdF9jaXJjdWxhdGluZ19sYWJlbF8zLnZhbHVlLmJ5dGVzKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMyBleGlzdHMKICAgIGxlbgogICAgaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIEFkZHJlc3MgbGVuZ3RoIGlzIDMyIGJ5dGVzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojg5LTkwCiAgICAvLyAjIFByZWNvbmRpdGlvbnMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA9PSBzZWxmLmFzc2V0X2lkLCBlcnIuSU5WQUxJRF9BU1NFVF9JRAogICAgaW50IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjQtMjUKICAgIC8vICMgR2xvYmFsIFN0YXRlCiAgICAvLyBzZWxmLmFzc2V0X2lkID0gVUludDY0KCkKICAgIGJ5dGUgImFzc2V0X2lkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo4OS05MAogICAgLy8gIyBQcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgYXNzZXRfaWQgPT0gc2VsZi5hc3NldF9pZCwgZXJyLklOVkFMSURfQVNTRVRfSUQKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldF9pZCBleGlzdHMKICAgIGZyYW1lX2RpZyAtMQogICAgPT0KICAgIGFzc2VydCAvLyBJbnZhbGlkIEFTQSBJRAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5NAogICAgLy8gaWYgYXNzZXQucmVzZXJ2ZSA9PSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRSZXNlcnZlCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5Ojk0LTk1CiAgICAvLyBpZiBhc3NldC5yZXNlcnZlID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTUKICAgIC8vIG9yIG5vdCBhc3NldC5yZXNlcnZlLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0UmVzZXJ2ZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAzCgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5MwogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAyCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA0CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6OTYKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShhc3NldC5yZXNlcnZlKQogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0UmVzZXJ2ZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwMAogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzEgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgZnJhbWVfZGlnIDMKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAwLTEwMQogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzEgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18xLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAxCiAgICAvLyBvciBub3Qgbm90X2NpcmN1bGF0aW5nXzEuaXNfb3B0ZWRfaW4oYXNzZXQpCiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGJ1cnkgMQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUA3CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTo5OQogICAgLy8gVUludDY0KDApCiAgICBpbnQgMAogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUA4CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTAyCiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2Uobm90X2NpcmN1bGF0aW5nXzEpCiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNgogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzIgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgZnJhbWVfZGlnIDQKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA2LTEwNwogICAgLy8gaWYgbm90X2NpcmN1bGF0aW5nXzIgPT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18yLmlzX29wdGVkX2luKGFzc2V0KQogICAgYm56IGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjEwNwogICAgLy8gb3Igbm90IG5vdF9jaXJjdWxhdGluZ18yLmlzX29wdGVkX2luKGFzc2V0KQogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBidXJ5IDEKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfZmFsc2VAMTEKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV90cnVlQDEwOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMDUKICAgIC8vIFVJbnQ2NCgwKQogICAgaW50IDAKICAgIGZyYW1lX2J1cnkgMQogICAgYiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfbWVyZ2VAMTIKCmFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9mYWxzZUAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTA4CiAgICAvLyBlbHNlIGFzc2V0LmJhbGFuY2Uobm90X2NpcmN1bGF0aW5nXzIpCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IG9wdGVkIGludG8gYXNzZXQKICAgIGZyYW1lX2J1cnkgMQoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDEyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTIKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18zID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGZyYW1lX2RpZyA1CiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExMi0xMTMKICAgIC8vIGlmIG5vdF9jaXJjdWxhdGluZ18zID09IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vIG9yIG5vdCBub3RfY2lyY3VsYXRpbmdfMy5pc19vcHRlZF9pbihhc3NldCkKICAgIGJueiBhcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTMKICAgIC8vIG9yIG5vdCBub3RfY2lyY3VsYXRpbmdfMy5pc19vcHRlZF9pbihhc3NldCkKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICBibnogYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1CgphcmM2Ml9nZXRfY2lyY3VsYXRpbmdfc3VwcGx5X3Rlcm5hcnlfdHJ1ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTExCiAgICAvLyBVSW50NjQoMCkKICAgIGludCAwCiAgICBiIGFyYzYyX2dldF9jaXJjdWxhdGluZ19zdXBwbHlfdGVybmFyeV9tZXJnZUAxNgoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X2ZhbHNlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTQKICAgIC8vIGVsc2UgYXNzZXQuYmFsYW5jZShub3RfY2lyY3VsYXRpbmdfMykKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAoKYXJjNjJfZ2V0X2NpcmN1bGF0aW5nX3N1cHBseV90ZXJuYXJ5X21lcmdlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTcKICAgIC8vIGFzc2V0LnRvdGFsCiAgICBmcmFtZV9kaWcgLTEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRUb3RhbAogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTE4CiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIGZyYW1lX2RpZyAyCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjExNy0xMTkKICAgIC8vIGFzc2V0LnRvdGFsCiAgICAvLyAtIHJlc2VydmVfYmFsYW5jZQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8xCiAgICBmcmFtZV9kaWcgMAogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIwCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICBmcmFtZV9kaWcgMQogICAgLQogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToxMTctMTIxCiAgICAvLyBhc3NldC50b3RhbAogICAgLy8gLSByZXNlcnZlX2JhbGFuY2UKICAgIC8vIC0gbm90X2NpcmN1bGF0aW5nX2JhbGFuY2VfMQogICAgLy8gLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICAvLyAtIG5vdF9jaXJjdWxhdGluZ19iYWxhbmNlXzMKICAgIHN3YXAKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MTE2LTEyMgogICAgLy8gcmV0dXJuICgKICAgIC8vICAgICBhc3NldC50b3RhbAogICAgLy8gICAgIC0gcmVzZXJ2ZV9iYWxhbmNlCiAgICAvLyAgICAgLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8xCiAgICAvLyAgICAgLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8yCiAgICAvLyAgICAgLSBub3RfY2lyY3VsYXRpbmdfYmFsYW5jZV8zCiAgICAvLyApCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jaXJjdWxhdGluZ19zdXBwbHkuY29udHJhY3QuQ2lyY3VsYXRpbmdTdXBwbHkuX19pbml0X18oKSAtPiB2b2lkOgpfX2luaXRfXzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjMKICAgIC8vIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgogICAgcHJvdG8gMCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjI0LTI1CiAgICAvLyAjIEdsb2JhbCBTdGF0ZQogICAgLy8gc2VsZi5hc3NldF9pZCA9IFVJbnQ2NCgpCiAgICBieXRlICJhc3NldF9pZCIKICAgIGludCAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyNwogICAgLy8gQWRkcmVzcygpLCBrZXk9Y2ZnLk5PVF9DSVJDVUxBVElOR19MQUJFTF8xCiAgICBieXRlICJidXJuZWQiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MjYtMjgKICAgIC8vIHNlbGYubm90X2NpcmN1bGF0aW5nX2xhYmVsXzEgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzEKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjMwCiAgICAvLyBBZGRyZXNzKCksIGtleT1jZmcuTk9UX0NJUkNVTEFUSU5HX0xBQkVMXzIKICAgIGJ5dGUgImxvY2tlZCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weToyOS0zMQogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMiA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMgogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jaXJjdWxhdGluZ19zdXBwbHkvY29udHJhY3QucHk6MzMKICAgIC8vIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgYnl0ZSAiZ2VuZXJpYyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL2NpcmN1bGF0aW5nX3N1cHBseS9jb250cmFjdC5weTozMi0zNAogICAgLy8gc2VsZi5ub3RfY2lyY3VsYXRpbmdfbGFiZWxfMyA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIEFkZHJlc3MoKSwga2V5PWNmZy5OT1RfQ0lSQ1VMQVRJTkdfTEFCRUxfMwogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgpzbWFydF9jb250cmFjdHMuY2lyY3VsYXRpbmdfc3VwcGx5LmNvbnRyYWN0LkNpcmN1bGF0aW5nU3VwcGx5LmNsZWFyX3N0YXRlX3Byb2dyYW06CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2lyY3VsYXRpbmdfc3VwcGx5L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBjbGFzcyBDaXJjdWxhdGluZ1N1cHBseShBUkM0Q29udHJhY3QpOgogICAgaW50IDEKICAgIHJldHVybgo=" }, "state": { diff --git a/assets/arc-0062/smart_contracts/circulating_supply/contract.py b/assets/arc-0062/smart_contracts/circulating_supply/contract.py index c08891e39..c2266ea47 100644 --- a/assets/arc-0062/smart_contracts/circulating_supply/contract.py +++ b/assets/arc-0062/smart_contracts/circulating_supply/contract.py @@ -83,9 +83,9 @@ def arc62_get_circulating_supply(self, asset_id: UInt64) -> UInt64: ASA circulating supply """ asset = Asset(asset_id) - burned = Account(self.not_circulating_label_1.value.bytes) - locked = Account(self.not_circulating_label_2.value.bytes) - generic = Account(self.not_circulating_label_3.value.bytes) + 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 @@ -95,25 +95,28 @@ def arc62_get_circulating_supply(self, asset_id: UInt64) -> UInt64: or not asset.reserve.is_opted_in(asset) else asset.balance(asset.reserve) ) - burned_balance = ( + not_circulating_balance_1 = ( UInt64(0) - if burned == Global.zero_address or not burned.is_opted_in(asset) - else asset.balance(burned) + if not_circulating_1 == Global.zero_address + or not not_circulating_1.is_opted_in(asset) + else asset.balance(not_circulating_1) ) - locked_balance = ( + not_circulating_balance_2 = ( UInt64(0) - if locked == Global.zero_address or not locked.is_opted_in(asset) - else asset.balance(locked) + if not_circulating_2 == Global.zero_address + or not not_circulating_2.is_opted_in(asset) + else asset.balance(not_circulating_2) ) - generic_balance = ( + not_circulating_balance_3 = ( UInt64(0) - if generic == Global.zero_address or not generic.is_opted_in(asset) - else asset.balance(generic) + 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 - - burned_balance - - locked_balance - - generic_balance + - not_circulating_balance_1 + - not_circulating_balance_2 + - not_circulating_balance_3 ) diff --git a/assets/arc-0062/tests/test_set_not_circulating_address.py b/assets/arc-0062/tests/test_set_not_circulating_address.py index 60e227a0e..cd0f7d931 100644 --- a/assets/arc-0062/tests/test_set_not_circulating_address.py +++ b/assets/arc-0062/tests/test_set_not_circulating_address.py @@ -109,7 +109,7 @@ def test_fail_invalid_label( with pytest.raises(LogicError, match=err.INVALID_LABEL): # type: ignore asset_circulating_supply_client.set_not_circulating_address( address=not_circulating_balance_1.address, - label="spam", + label=cfg.NOT_CIRCULATING_LABEL_1 + "spam", transaction_parameters=OnCompleteCallParameters( sender=asset_manager.address, signer=asset_manager.signer, From 249a35b114e9140d2015900b1bad3cce03d2e052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Thu, 1 Aug 2024 11:29:37 +0200 Subject: [PATCH 21/60] adding requirement for option3, arc with 0 padding --- ARCs/arc-0002.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index 69b271626..933665be5 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -20,10 +20,16 @@ The goal of these conventions is to make it simpler for block explorers and inde Note fields should be formatted as follows: +for dApps ``` : ``` +for ARCs +``` +arc: +``` + where: * `` is the name of the dApp: * Regexp to satisfy: `[a-zA-Z0-9][a-zA-Z0-9_/@.-]{4-31}` @@ -34,7 +40,12 @@ where: * be at most 32 characters long * Names starting with `a/` and `af/` are reserved for the Algorand protocol and the Algorand Foundation uses. - +- `` is the number of the ARC with 0 padding: + - Regexp to satisfy: `0\d{3}|\d{4}` + - Only contain a four-digit number, either zero-padded or not, matching: + - 0\d{3} for zero-padded numbers (e.g., 0001, 0456). + - \d{4} for non-padded four-digit numbers (e.g., 1234, 5678). + - Be exactly four digits long. * `` is one of the following: * `m`: MsgPack @@ -43,7 +54,9 @@ where: * `u`: utf-8 string * `` is the actual data in the format specified by `` -**WARNING**: Any user can create transactions with arbitrary data and may impersonate other dApps. In particular, the fact that a note field start with `` does not guarantee that it indeed comes from this dApp. The value `` cannot be relied upon to ensure provenance and validity of the ``. +**WARNING**: Any user can create transactions with arbitrary data and may impersonate other dApps. In particular, the fact that a note field start with `` does not guarantee that it indeed comes from this dApp. The value `` cannot be relied upon to ensure provenance and validity of the ``. + +**WARNING**: Any user can create transactions with arbitrary data, including arc numbers, which may not correspond to the intended standard. An arc number included in a note field does not ensure compliance with the corresponding standard. The value of the arc number cannot be relied upon to ensure the provenance and validity of the . ### Versioning @@ -76,7 +89,7 @@ The restrictions on dApp names were chosen to allow most usual names while avoid > This section is non-normative. -Consider a dApp named `algoCityTemp` that stores temperatures from cities on the blockchain. +Consider a dApp named `algoCityTemp` that stores temperatures from cities on the blockchain. Here are some potential notes indicating that Singapore's temperature is 35 degree Celsius: * JSON without version: @@ -114,4 +127,4 @@ Here are some potential notes indicating that Singapore's temperature is 35 degr ## Copyright -Copyright and related rights waived via CCO. \ No newline at end of file +Copyright and related rights waived via CCO. From 48a994bdc4c832d79b4a89da5422fe4f674f2530 Mon Sep 17 00:00:00 2001 From: cusma Date: Fri, 2 Aug 2024 10:07:39 +0200 Subject: [PATCH 22/60] fear: update assets --- .../snapshots/CirculatingSupply.approval.json | 63954 ++++++++++++++++ .../snapshots/CirculatingSupply.clear.json | 208 + assets/arc-0062/poetry.lock | 308 +- assets/arc-0062/pyproject.toml | 4 +- .../CirculatingSupply.arc32.json | 3 + .../circulating_supply_client.py | 2 +- 6 files changed, 64328 insertions(+), 151 deletions(-) create mode 100644 assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.approval.json create mode 100644 assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.clear.json diff --git a/assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.approval.json b/assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.approval.json new file mode 100644 index 000000000..f86ac7094 --- /dev/null +++ b/assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.approval.json @@ -0,0 +1,63954 @@ +{ + "success": false, + "error": null, + "result": [ + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"unprotected-deletable\", Impact: High, Confidence: High\nDescription: Unprotected Deletable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#unprotected-deletable-application\n", + "check": "unprotected-deletable", + "impact": "High", + "confidence": "High", + "help": "- Avoid deletable applications.\n- Add access controls to the vulnerable method.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"unprotected-updatable\", Impact: High, Confidence: High\nDescription: Unprotected Upgradable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#unprotected-updatable-application\n", + "check": "unprotected-updatable", + "impact": "High", + "confidence": "High", + "help": "- Avoid upgradable applications.\n- Add access controls to the vulnerable method.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"can-close-account\", Impact: High, Confidence: High\nDescription: Missing CloseRemainderTo field Validation\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-closeremainderto-field-validation\n", + "check": "can-close-account", + "impact": "High", + "confidence": "High", + "help": "Validate `CloseRemainderTo` field in the LogicSig.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"can-close-asset\", Impact: High, Confidence: High\nDescription: Missing AssetCloseTo Field Validation\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-assetcloseto-field-validation\n", + "check": "can-close-asset", + "impact": "High", + "confidence": "High", + "help": "Validate `AssetCloseTo` field in the LogicSig.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"is-deletable\", Impact: High, Confidence: High\nDescription: Deletable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#deletable-application\n", + "check": "is-deletable", + "impact": "High", + "confidence": "High", + "help": "Do not approve `DeleteApplication` type application calls.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"is-updatable\", Impact: High, Confidence: High\nDescription: Upgradable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#upgradable-application\n", + "check": "is-updatable", + "impact": "High", + "confidence": "High", + "help": "Do not approve `UpdateApplication` type application calls.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 176, + "description": "\nCheck: \"missing-fee-check\", Impact: High, Confidence: High\nDescription: Missing Fee Field Validation\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-fee-field-validation\n", + "check": "missing-fee-check", + "impact": "High", + "confidence": "High", + "help": "Validate `Fee` field in the LogicSig.", + "paths": [ + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 6 -> 13 -> 14 -> 15 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "119: int 1", + "120: b set_asset_bool_merge@4" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 6 -> 13 -> 14 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 6 -> 13 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 8 -> 18 -> 20 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "208: set_not_circulating_address_switch_case_0@1:", + "211: byte \"burned\"", + "214: frame_dig -2", + "215: app_global_put", + "216: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 8 -> 18 -> 21 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "218: set_not_circulating_address_switch_case_1@2:", + "221: byte \"locked\"", + "224: frame_dig -2", + "225: app_global_put", + "226: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 8 -> 18 -> 22 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "228: set_not_circulating_address_switch_case_2@3:", + "231: byte \"generic\"", + "234: frame_dig -2", + "235: app_global_put" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 12", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "80: main_bare_routing@9:", + "83: txn OnCompletion", + "84: !", + "85: assert", + "86: txn ApplicationID", + "87: !", + "88: assert", + "89: int 1", + "90: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 6 -> 13 -> 14 -> 15 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "119: int 1", + "120: b set_asset_bool_merge@4" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 6 -> 13 -> 14 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 6 -> 13 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 8 -> 18 -> 20 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "208: set_not_circulating_address_switch_case_0@1:", + "211: byte \"burned\"", + "214: frame_dig -2", + "215: app_global_put", + "216: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 8 -> 18 -> 21 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "218: set_not_circulating_address_switch_case_1@2:", + "221: byte \"locked\"", + "224: frame_dig -2", + "225: app_global_put", + "226: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 8 -> 18 -> 22 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "228: set_not_circulating_address_switch_case_2@3:", + "231: byte \"generic\"", + "234: frame_dig -2", + "235: app_global_put" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 12", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "80: main_bare_routing@9:", + "83: txn OnCompletion", + "84: !", + "85: assert", + "86: txn ApplicationID", + "87: !", + "88: assert", + "89: int 1", + "90: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"group-size-check\", Impact: High, Confidence: High\nDescription: Usage of absolute indexes without validating GroupSize\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-groupsize-validation\n", + "check": "group-size-check", + "impact": "High", + "confidence": "High", + "help": "- Avoid using absolute indexes. Validate GroupSize if used.\n- Favor using ARC-4 ABI and relative indexes for group transactions.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 176, + "description": "\nCheck: \"rekey-to\", Impact: High, Confidence: High\nDescription: Rekeyable Logic Signatures\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#rekeyable-logicsig\n", + "check": "rekey-to", + "impact": "High", + "confidence": "High", + "help": "Validate `RekeyTo` field in the LogicSig.", + "paths": [ + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 6 -> 13 -> 14 -> 15 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "119: int 1", + "120: b set_asset_bool_merge@4" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 6 -> 13 -> 14 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 6 -> 13 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 8 -> 18 -> 20 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "208: set_not_circulating_address_switch_case_0@1:", + "211: byte \"burned\"", + "214: frame_dig -2", + "215: app_global_put", + "216: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 8 -> 18 -> 21 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "218: set_not_circulating_address_switch_case_1@2:", + "221: byte \"locked\"", + "224: frame_dig -2", + "225: app_global_put", + "226: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 8 -> 18 -> 22 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "228: set_not_circulating_address_switch_case_2@3:", + "231: byte \"generic\"", + "234: frame_dig -2", + "235: app_global_put" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 2 -> 41 -> 3 -> 12", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "6: callsub __init__" + ], + [ + "500: __init__:", + "503: proto 0 0", + "507: byte \"asset_id\"", + "508: int 0", + "509: app_global_put", + "512: byte \"burned\"", + "513: global ZeroAddress", + "518: app_global_put", + "521: byte \"locked\"", + "522: global ZeroAddress", + "527: app_global_put", + "530: byte \"generic\"", + "531: global ZeroAddress", + "536: app_global_put", + "537: retsub" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "80: main_bare_routing@9:", + "83: txn OnCompletion", + "84: !", + "85: assert", + "86: txn ApplicationID", + "87: !", + "88: assert", + "89: int 1", + "90: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 6 -> 13 -> 14 -> 15 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "119: int 1", + "120: b set_asset_bool_merge@4" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 6 -> 13 -> 14 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "108: int 0", + "112: byte \"asset_id\"", + "116: app_global_get_ex", + "117: assert", + "118: bnz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 6 -> 13 -> 16 -> 17 -> 7", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "20: main_set_asset_route@4:", + "23: txn OnCompletion", + "24: !", + "25: assert", + "26: txn ApplicationID", + "27: assert", + "30: txna ApplicationArgs 1", + "31: btoi", + "34: callsub set_asset" + ], + [ + "94: set_asset:", + "98: proto 1 0", + "102: txn Sender", + "103: frame_dig -1", + "104: asset_params_get AssetManager", + "105: assert", + "106: ==", + "107: bz set_asset_bool_false@3" + ], + [ + "122: set_asset_bool_false@3:", + "123: int 0" + ], + [ + "125: set_asset_bool_merge@4:", + "129: assert", + "133: byte \"asset_id\"", + "137: frame_dig -1", + "138: app_global_put", + "139: retsub" + ], + [ + "35: int 1", + "36: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 8 -> 18 -> 20 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "208: set_not_circulating_address_switch_case_0@1:", + "211: byte \"burned\"", + "214: frame_dig -2", + "215: app_global_put", + "216: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 8 -> 18 -> 21 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "218: set_not_circulating_address_switch_case_1@2:", + "221: byte \"locked\"", + "224: frame_dig -2", + "225: app_global_put", + "226: b set_not_circulating_address_switch_case_next@5" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 8 -> 18 -> 22 -> 23 -> 9", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "38: main_set_not_circulating_address_route@5:", + "41: txn OnCompletion", + "42: !", + "43: assert", + "44: txn ApplicationID", + "45: assert", + "48: txna ApplicationArgs 1", + "49: txna ApplicationArgs 2", + "50: extract 2 0", + "53: callsub set_not_circulating_address" + ], + [ + "143: set_not_circulating_address:", + "147: proto 2 0", + "150: int 0", + "154: byte \"asset_id\"", + "157: app_global_get_ex", + "158: assert", + "162: txn Sender", + "163: swap", + "164: dup", + "165: asset_params_get AssetManager", + "166: assert", + "167: uncover 2", + "168: ==", + "169: assert", + "172: frame_dig -2", + "173: len", + "174: int 32", + "175: ==", + "176: assert", + "177: frame_dig -2", + "178: swap", + "179: asset_holding_get AssetBalance", + "180: bury 1", + "181: assert", + "184: byte \"burned\"", + "187: byte \"locked\"", + "190: byte \"generic\"", + "202: frame_dig -1", + "203: match set_not_circulating_address_switch_case_0@1 set_not_circulating_address_switch_case_1@2 set_not_circulating_address_switch_case_2@3" + ], + [ + "228: set_not_circulating_address_switch_case_2@3:", + "231: byte \"generic\"", + "234: frame_dig -2", + "235: app_global_put" + ], + [ + "237: set_not_circulating_address_switch_case_next@5:", + "238: retsub" + ], + [ + "54: int 1", + "55: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 25 -> 27 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "329: frame_dig -1", + "330: asset_params_get AssetReserve", + "331: assert", + "332: frame_dig -1", + "333: asset_holding_get AssetBalance", + "334: bury 1", + "335: bnz arc62_get_circulating_supply_ternary_false@3" + ], + [ + "344: arc62_get_circulating_supply_ternary_false@3:", + "347: frame_dig -1", + "348: asset_params_get AssetReserve", + "349: assert", + "350: frame_dig -1", + "351: asset_holding_get AssetBalance", + "352: assert", + "353: frame_bury 2" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 29 -> 31 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "367: frame_dig 3", + "368: frame_dig -1", + "369: asset_holding_get AssetBalance", + "370: bury 1", + "371: bnz arc62_get_circulating_supply_ternary_false@7" + ], + [ + "380: arc62_get_circulating_supply_ternary_false@7:", + "383: frame_dig 3", + "384: frame_dig -1", + "385: asset_holding_get AssetBalance", + "386: assert", + "387: frame_bury 0" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 33 -> 35 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "401: frame_dig 4", + "402: frame_dig -1", + "403: asset_holding_get AssetBalance", + "404: bury 1", + "405: bnz arc62_get_circulating_supply_ternary_false@11" + ], + [ + "414: arc62_get_circulating_supply_ternary_false@11:", + "417: frame_dig 4", + "418: frame_dig -1", + "419: asset_holding_get AssetBalance", + "420: assert", + "421: frame_bury 1" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 37 -> 39 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "435: frame_dig 5", + "436: frame_dig -1", + "437: asset_holding_get AssetBalance", + "438: bury 1", + "439: bnz arc62_get_circulating_supply_ternary_false@15" + ], + [ + "447: arc62_get_circulating_supply_ternary_false@15:", + "450: frame_dig 5", + "451: frame_dig -1", + "452: asset_holding_get AssetBalance", + "453: assert" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 4 -> 10 -> 24 -> 26 -> 28 -> 30 -> 32 -> 34 -> 36 -> 38 -> 40 -> 11", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "13: method set_asset(uint64)void", + "14: method set_not_circulating_address(address,string)void", + "15: method arc62_get_circulating_supply(uint64)uint64", + "16: txna ApplicationArgs 0", + "17: match main_set_asset_route@4 main_set_not_circulating_address_route@5 main_arc62_get_circulating_supply_route@6" + ], + [ + "57: main_arc62_get_circulating_supply_route@6:", + "60: txn OnCompletion", + "61: !", + "62: assert", + "63: txn ApplicationID", + "64: assert", + "67: txna ApplicationArgs 1", + "68: btoi", + "71: callsub arc62_get_circulating_supply" + ], + [ + "242: arc62_get_circulating_supply:", + "246: proto 1 1", + "247: byte \"\"", + "248: dupn 2", + "251: int 0", + "254: byte \"burned\"", + "257: app_global_get_ex", + "258: swap", + "259: dup", + "260: uncover 2", + "261: assert", + "262: len", + "263: int 32", + "264: ==", + "265: assert", + "268: int 0", + "271: byte \"locked\"", + "274: app_global_get_ex", + "275: swap", + "276: dup", + "277: uncover 2", + "278: assert", + "279: len", + "280: int 32", + "281: ==", + "282: assert", + "285: int 0", + "288: byte \"generic\"", + "291: app_global_get_ex", + "292: swap", + "293: dup", + "294: uncover 2", + "295: assert", + "296: len", + "297: int 32", + "298: ==", + "299: assert", + "303: int 0", + "307: byte \"asset_id\"", + "311: app_global_get_ex", + "312: assert", + "313: frame_dig -1", + "314: ==", + "315: assert", + "318: frame_dig -1", + "319: asset_params_get AssetReserve", + "320: assert", + "321: global ZeroAddress", + "322: ==", + "326: bnz arc62_get_circulating_supply_ternary_true@2" + ], + [ + "337: arc62_get_circulating_supply_ternary_true@2:", + "340: int 0", + "341: frame_bury 2", + "342: b arc62_get_circulating_supply_ternary_merge@4" + ], + [ + "355: arc62_get_circulating_supply_ternary_merge@4:", + "358: frame_dig 3", + "359: global ZeroAddress", + "360: ==", + "364: bnz arc62_get_circulating_supply_ternary_true@6" + ], + [ + "373: arc62_get_circulating_supply_ternary_true@6:", + "376: int 0", + "377: frame_bury 0", + "378: b arc62_get_circulating_supply_ternary_merge@8" + ], + [ + "389: arc62_get_circulating_supply_ternary_merge@8:", + "392: frame_dig 4", + "393: global ZeroAddress", + "394: ==", + "398: bnz arc62_get_circulating_supply_ternary_true@10" + ], + [ + "407: arc62_get_circulating_supply_ternary_true@10:", + "410: int 0", + "411: frame_bury 1", + "412: b arc62_get_circulating_supply_ternary_merge@12" + ], + [ + "423: arc62_get_circulating_supply_ternary_merge@12:", + "426: frame_dig 5", + "427: global ZeroAddress", + "428: ==", + "432: bnz arc62_get_circulating_supply_ternary_true@14" + ], + [ + "441: arc62_get_circulating_supply_ternary_true@14:", + "444: int 0", + "445: b arc62_get_circulating_supply_ternary_merge@16" + ], + [ + "455: arc62_get_circulating_supply_ternary_merge@16:", + "458: frame_dig -1", + "459: asset_params_get AssetTotal", + "460: assert", + "464: frame_dig 2", + "465: -", + "470: frame_dig 0", + "471: -", + "477: frame_dig 1", + "478: -", + "485: swap", + "486: -", + "495: frame_bury 0", + "496: retsub" + ], + [ + "72: itob", + "73: byte 0x151f7c75", + "74: swap", + "75: concat", + "76: log", + "77: int 1", + "78: return" + ] + ] + }, + { + "short": "0 -> 1 -> 3 -> 12", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.approval_program:", + "4: txn ApplicationID", + "5: bnz main_entrypoint@2" + ], + [ + "8: main_entrypoint@2:", + "11: txn NumAppArgs", + "12: bz main_bare_routing@9" + ], + [ + "80: main_bare_routing@9:", + "83: txn OnCompletion", + "84: !", + "85: assert", + "86: txn ApplicationID", + "87: !", + "88: assert", + "89: int 1", + "90: return" + ] + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.clear.json b/assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.clear.json new file mode 100644 index 000000000..5d8b3a0b5 --- /dev/null +++ b/assets/arc-0062/.algokit/static-analysis/snapshots/CirculatingSupply.clear.json @@ -0,0 +1,208 @@ +{ + "success": false, + "error": null, + "result": [ + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"unprotected-deletable\", Impact: High, Confidence: High\nDescription: Unprotected Deletable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#unprotected-deletable-application\n", + "check": "unprotected-deletable", + "impact": "High", + "confidence": "High", + "help": "- Avoid deletable applications.\n- Add access controls to the vulnerable method.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"unprotected-updatable\", Impact: High, Confidence: High\nDescription: Unprotected Upgradable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#unprotected-updatable-application\n", + "check": "unprotected-updatable", + "impact": "High", + "confidence": "High", + "help": "- Avoid upgradable applications.\n- Add access controls to the vulnerable method.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"can-close-account\", Impact: High, Confidence: High\nDescription: Missing CloseRemainderTo field Validation\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-closeremainderto-field-validation\n", + "check": "can-close-account", + "impact": "High", + "confidence": "High", + "help": "Validate `CloseRemainderTo` field in the LogicSig.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"can-close-asset\", Impact: High, Confidence: High\nDescription: Missing AssetCloseTo Field Validation\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-assetcloseto-field-validation\n", + "check": "can-close-asset", + "impact": "High", + "confidence": "High", + "help": "Validate `AssetCloseTo` field in the LogicSig.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"is-deletable\", Impact: High, Confidence: High\nDescription: Deletable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#deletable-application\n", + "check": "is-deletable", + "impact": "High", + "confidence": "High", + "help": "Do not approve `DeleteApplication` type application calls.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"is-updatable\", Impact: High, Confidence: High\nDescription: Upgradable Applications\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#upgradable-application\n", + "check": "is-updatable", + "impact": "High", + "confidence": "High", + "help": "Do not approve `UpdateApplication` type application calls.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"missing-fee-check\", Impact: High, Confidence: High\nDescription: Missing Fee Field Validation\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-fee-field-validation\n", + "check": "missing-fee-check", + "impact": "High", + "confidence": "High", + "help": "Validate `Fee` field in the LogicSig.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + }, + { + "type": "ExecutionPaths", + "count": 0, + "description": "\nCheck: \"group-size-check\", Impact: High, Confidence: High\nDescription: Usage of absolute indexes without validating GroupSize\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#missing-groupsize-validation\n", + "check": "group-size-check", + "impact": "High", + "confidence": "High", + "help": "- Avoid using absolute indexes. Validate GroupSize if used.\n- Favor using ARC-4 ABI and relative indexes for group transactions.", + "paths": [] + }, + { + "type": "ExecutionPaths", + "count": 1, + "description": "\nCheck: \"rekey-to\", Impact: High, Confidence: High\nDescription: Rekeyable Logic Signatures\n\nWiki: https://github.com/crytic/tealer/wiki/Detector-Documentation#rekeyable-logicsig\n", + "check": "rekey-to", + "impact": "High", + "confidence": "High", + "help": "Validate `RekeyTo` field in the LogicSig.", + "paths": [ + { + "short": "0 -> 1", + "blocks": [ + [ + "1: #pragma version 10" + ], + [ + "3: smart_contracts.circulating_supply.contract.CirculatingSupply.clear_state_program:", + "6: int 1", + "7: return" + ] + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/assets/arc-0062/poetry.lock b/assets/arc-0062/poetry.lock index db07c0761..789ef5cda 100644 --- a/assets/arc-0062/poetry.lock +++ b/assets/arc-0062/poetry.lock @@ -1,91 +1,103 @@ # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +[[package]] +name = "aiohappyeyeballs" +version = "2.3.4" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "aiohappyeyeballs-2.3.4-py3-none-any.whl", hash = "sha256:40a16ceffcf1fc9e142fd488123b2e218abc4188cf12ac20c67200e1579baa42"}, + {file = "aiohappyeyeballs-2.3.4.tar.gz", hash = "sha256:7e1ae8399c320a8adec76f6c919ed5ceae6edd4c3672f4d9eae2b27e37c80ff6"}, +] + [[package]] name = "aiohttp" -version = "3.9.5" +version = "3.10.0" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, - {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, - {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, - {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, - {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, - {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, - {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, - {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, - {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, - {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, - {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, - {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, - {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, - {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, - {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, - {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, - {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, - {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, - {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, - {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, - {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, - {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, - {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, - {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, - {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, - {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, - {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, - {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, - {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, - {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, - {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, - {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, - {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, - {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, - {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, - {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, + {file = "aiohttp-3.10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:68ab608118e212f56feef44d4785aa90b713042da301f26338f36497b481cd79"}, + {file = "aiohttp-3.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:64a117c16273ca9f18670f33fc7fd9604b9f46ddb453ce948262889a6be72868"}, + {file = "aiohttp-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:54076a25f32305e585a3abae1f0ad10646bec539e0e5ebcc62b54ee4982ec29f"}, + {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71c76685773444d90ae83874433505ed800e1706c391fdf9e57cc7857611e2f4"}, + {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bdda86ab376f9b3095a1079a16fbe44acb9ddde349634f1c9909d13631ff3bcf"}, + {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d6dcd1d21da5ae1416f69aa03e883a51e84b6c803b8618cbab341ac89a85b9e"}, + {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06ef0135d7ab7fb0284342fbbf8e8ddf73b7fee8ecc55f5c3a3d0a6b765e6d8b"}, + {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccab9381f38c669bb9254d848f3b41a3284193b3e274a34687822f98412097e9"}, + {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:947da3aee057010bc750b7b4bb65cbd01b0bdb7c4e1cf278489a1d4a1e9596b3"}, + {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5268b35fee7eb754fb5b3d0f16a84a2e9ed21306f5377f3818596214ad2d7714"}, + {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ff25d988fd6ce433b5c393094a5ca50df568bdccf90a8b340900e24e0d5fb45c"}, + {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:594b4b4f1dfe8378b4a0342576dc87a930c960641159f5ae83843834016dbd59"}, + {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c8820dad615cd2f296ed3fdea8402b12663ac9e5ea2aafc90ef5141eb10b50b8"}, + {file = "aiohttp-3.10.0-cp310-cp310-win32.whl", hash = "sha256:ab1d870403817c9a0486ca56ccbc0ebaf85d992277d48777faa5a95e40e5bcca"}, + {file = "aiohttp-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:563705a94ea3af43467167f3a21c665f3b847b2a0ae5544fa9e18df686a660da"}, + {file = "aiohttp-3.10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13679e11937d3f37600860de1f848e2e062e2b396d3aa79b38c89f9c8ab7e791"}, + {file = "aiohttp-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c66a1aadafbc0bd7d648cb7fcb3860ec9beb1b436ce3357036a4d9284fcef9a"}, + {file = "aiohttp-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7e3545b06aae925f90f06402e05cfb9c62c6409ce57041932163b09c48daad6"}, + {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:effafe5144aa32f0388e8f99b1b2692cf094ea2f6b7ceca384b54338b77b1f50"}, + {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a04f2c8d41821a2507b49b2694c40495a295b013afb0cc7355b337980b47c546"}, + {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dbfac556219d884d50edc6e1952a93545c2786193f00f5521ec0d9d464040ab"}, + {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a65472256c5232681968deeea3cd5453aa091c44e8db09f22f1a1491d422c2d9"}, + {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941366a554e566efdd3f042e17a9e461a36202469e5fd2aee66fe3efe6412aef"}, + {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:927b4aca6340301e7d8bb05278d0b6585b8633ea852b7022d604a5df920486bf"}, + {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:34adb8412e736a5d0df6d1fccdf71599dfb07a63add241a94a189b6364e997f1"}, + {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:43c60d9b332a01ee985f080f639f3e56abcfb95ec1320013c94083c3b6a2e143"}, + {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:3f49edf7c5cd2987634116e1b6a0ee2438fca17f7c4ee480ff41decb76cf6158"}, + {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9784246431eaf9d651b3cc06f9c64f9a9f57299f4971c5ea778fa0b81074ef13"}, + {file = "aiohttp-3.10.0-cp311-cp311-win32.whl", hash = "sha256:bec91402df78b897a47b66b9c071f48051cea68d853d8bc1d4404896c6de41ae"}, + {file = "aiohttp-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:25a9924343bf91b0c5082cae32cfc5a1f8787ac0433966319ec07b0ed4570722"}, + {file = "aiohttp-3.10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:21dab4a704c68dc7bc2a1219a4027158e8968e2079f1444eda2ba88bc9f2895f"}, + {file = "aiohttp-3.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:872c0dcaccebd5733d535868fe2356aa6939f5827dcea7a8b9355bb2eff6f56e"}, + {file = "aiohttp-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f381424dbce313bb5a666a215e7a9dcebbc533e9a2c467a1f0c95279d24d1fa7"}, + {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ca48e9f092a417c6669ee8d3a19d40b3c66dde1a2ae0d57e66c34812819b671"}, + {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbe2f6d0466f5c59c7258e0745c20d74806a1385fbb7963e5bbe2309a11cc69b"}, + {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:03799a95402a7ed62671c4465e1eae51d749d5439dbc49edb6eee52ea165c50b"}, + {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5549c71c35b5f057a4eebcc538c41299826f7813f28880722b60e41c861a57ec"}, + {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6fa7a42b78d8698491dc4ad388169de54cca551aa9900f750547372de396277"}, + {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:77bbf0a2f6fefac6c0db1792c234f577d80299a33ce7125467439097cf869198"}, + {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:34eaf5cfcc979846d73571b1a4be22cad5e029d55cdbe77cdc7545caa4dcb925"}, + {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4f1de31a585344a106db43a9c3af2e15bb82e053618ff759f1fdd31d82da38eb"}, + {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3a1ea61d96146e9b9e5597069466e2e4d9e01e09381c5dd51659f890d5e29e7"}, + {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:73c01201219eb039a828bb58dcc13112eec2fed6eea718356316cd552df26e04"}, + {file = "aiohttp-3.10.0-cp312-cp312-win32.whl", hash = "sha256:33e915971eee6d2056d15470a1214e4e0f72b6aad10225548a7ab4c4f54e2db7"}, + {file = "aiohttp-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2dc75da06c35a7b47a88ceadbf993a53d77d66423c2a78de8c6f9fb41ec35687"}, + {file = "aiohttp-3.10.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f1bc4d68b83966012813598fe39b35b4e6019b69d29385cf7ec1cb08e1ff829b"}, + {file = "aiohttp-3.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9b8b31c057a0b7bb822a159c490af05cb11b8069097f3236746a78315998afa"}, + {file = "aiohttp-3.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10f0d7894ddc6ff8f369e3fdc082ef1f940dc1f5b9003cd40945d24845477220"}, + {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72de8ffba4a27e3c6e83e58a379fc4fe5548f69f9b541fde895afb9be8c31658"}, + {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd36d0f0afc2bd84f007cedd2d9a449c3cf04af471853a25eb71f28bc2e1a119"}, + {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f64d503c661864866c09806ac360b95457f872d639ca61719115a9f389b2ec90"}, + {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31616121369bc823791056c632f544c6c8f8d1ceecffd8bf3f72ef621eaabf49"}, + {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f76c12abb88b7ee64b3f9ae72f0644af49ff139067b5add142836dab405d60d4"}, + {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6c99eef30a7e98144bcf44d615bc0f445b3a3730495fcc16124cb61117e1f81e"}, + {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:39e7ec718e7a1971a5d98357e3e8c0529477d45c711d32cd91999dc8d8404e1e"}, + {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1cef548ee4e84264b78879de0c754bbe223193c6313beb242ce862f82eab184"}, + {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:f98f036eab11d2f90cdd01b9d1410de9d7eb520d070debeb2edadf158b758431"}, + {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc4376ff537f7d2c1e98f97f6d548e99e5d96078b0333c1d3177c11467b972de"}, + {file = "aiohttp-3.10.0-cp38-cp38-win32.whl", hash = "sha256:ebedc51ee6d39f9ea5e26e255fd56a7f4e79a56e77d960f9bae75ef4f95ed57f"}, + {file = "aiohttp-3.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:aad87626f31a85fd4af02ba7fd6cc424b39d4bff5c8677e612882649da572e47"}, + {file = "aiohttp-3.10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1dc95c5e2a5e60095f1bb51822e3b504e6a7430c9b44bff2120c29bb876c5202"}, + {file = "aiohttp-3.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1c83977f7b6f4f4a96fab500f5a76d355f19f42675224a3002d375b3fb309174"}, + {file = "aiohttp-3.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8cedc48d36652dd3ac40e5c7c139d528202393e341a5e3475acedb5e8d5c4c75"}, + {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b099fbb823efed3c1d736f343ac60d66531b13680ee9b2669e368280f41c2b8"}, + {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d583755ddb9c97a2da1322f17fc7d26792f4e035f472d675e2761c766f94c2ff"}, + {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a03a4407bdb9ae815f0d5a19df482b17df530cf7bf9c78771aa1c713c37ff1f"}, + {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcb6e65f6ea7caa0188e36bebe9e72b259d3d525634758c91209afb5a6cbcba7"}, + {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6612c6ed3147a4a2d6463454b94b877566b38215665be4c729cd8b7bdce15b4"}, + {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b0c0148d2a69b82ffe650c2ce235b431d49a90bde7dd2629bcb40314957acf6"}, + {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0d85a173b4dbbaaad1900e197181ea0fafa617ca6656663f629a8a372fdc7d06"}, + {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:12c43dace645023583f3dd2337dfc3aa92c99fb943b64dcf2bc15c7aa0fb4a95"}, + {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:33acb0d9bf12cdc80ceec6f5fda83ea7990ce0321c54234d629529ca2c54e33d"}, + {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:91e0b76502205484a4d1d6f25f461fa60fe81a7987b90e57f7b941b0753c3ec8"}, + {file = "aiohttp-3.10.0-cp39-cp39-win32.whl", hash = "sha256:1ebd8ed91428ffbe8b33a5bd6f50174e11882d5b8e2fe28670406ab5ee045ede"}, + {file = "aiohttp-3.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:0433795c4a8bafc03deb3e662192250ba5db347c41231b0273380d2f53c9ea0b"}, + {file = "aiohttp-3.10.0.tar.gz", hash = "sha256:e8dd7da2609303e3574c95b0ec9f1fd49647ef29b94701a2862cceae76382e1d"}, ] [package.dependencies] +aiohappyeyeballs = ">=2.3.0" aiosignal = ">=1.1.2" attrs = ">=17.3.0" frozenlist = ">=1.1.1" @@ -93,7 +105,7 @@ multidict = ">=4.5,<7.0" yarl = ">=1.0,<2.0" [package.extras] -speedups = ["Brotli", "aiodns", "brotlicffi"] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aiosignal" @@ -111,12 +123,12 @@ frozenlist = ">=1.1.0" [[package]] name = "algokit-client-generator" -version = "1.1.5" +version = "1.1.6" description = "Algorand typed client Generator" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "algokit_client_generator-1.1.5-py3-none-any.whl", hash = "sha256:63b386431247913e6d4dc4668793c6eb60c71d59e9cca0ee05f803f284676783"}, + {file = "algokit_client_generator-1.1.6-py3-none-any.whl", hash = "sha256:c4a6dbc4185b0668239fe1d35596e94c6bf6190f9855a24f2924f9803e9e4e57"}, ] [package.dependencies] @@ -1169,43 +1181,43 @@ files = [ [[package]] name = "mypy" -version = "1.10.1" +version = "1.11.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, - {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, - {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, - {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, - {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, - {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, - {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, - {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, - {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, - {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, - {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, - {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, - {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, - {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, - {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, - {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, - {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, - {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, - {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, - {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, - {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, - {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, - {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, - {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, - {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, - {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, - {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, + {file = "mypy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c"}, + {file = "mypy-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411"}, + {file = "mypy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03"}, + {file = "mypy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4"}, + {file = "mypy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58"}, + {file = "mypy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5"}, + {file = "mypy-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca"}, + {file = "mypy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de"}, + {file = "mypy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809"}, + {file = "mypy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72"}, + {file = "mypy-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8"}, + {file = "mypy-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a"}, + {file = "mypy-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417"}, + {file = "mypy-1.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e"}, + {file = "mypy-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525"}, + {file = "mypy-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2"}, + {file = "mypy-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b"}, + {file = "mypy-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0"}, + {file = "mypy-1.11.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd"}, + {file = "mypy-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb"}, + {file = "mypy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe"}, + {file = "mypy-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c"}, + {file = "mypy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69"}, + {file = "mypy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74"}, + {file = "mypy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b"}, + {file = "mypy-1.11.1-py3-none-any.whl", hash = "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54"}, + {file = "mypy-1.11.1.tar.gz", hash = "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08"}, ] [package.dependencies] mypy-extensions = ">=1.0.0" -typing-extensions = ">=4.1.0" +typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] @@ -1237,13 +1249,13 @@ files = [ [[package]] name = "packageurl-python" -version = "0.15.3" +version = "0.15.6" description = "A purl aka. Package URL parser and builder" optional = false python-versions = ">=3.7" files = [ - {file = "packageurl_python-0.15.3-py3-none-any.whl", hash = "sha256:96624702032239e70e61b950e14460a5b5f87ac21fc68f119414047b94f0de27"}, - {file = "packageurl_python-0.15.3.tar.gz", hash = "sha256:82e1150f1fc228e25e7b3be1c641ef96b6a0811526c0b4e4f7882a181e862607"}, + {file = "packageurl_python-0.15.6-py3-none-any.whl", hash = "sha256:a40210652c89022772a6c8340d6066f7d5dc67132141e5284a4db7a27d0a8ab0"}, + {file = "packageurl_python-0.15.6.tar.gz", hash = "sha256:cbc89afd15d5f4d05db4f1b61297e5b97a43f61f28799f6d282aff467ed2ee96"}, ] [package.extras] @@ -1276,13 +1288,13 @@ files = [ [[package]] name = "pip" -version = "24.1.2" +version = "24.2" description = "The PyPA recommended tool for installing Python packages." optional = false python-versions = ">=3.8" files = [ - {file = "pip-24.1.2-py3-none-any.whl", hash = "sha256:7cd207eed4c60b0f411b444cd1464198fe186671c323b6cd6d433ed80fc9d247"}, - {file = "pip-24.1.2.tar.gz", hash = "sha256:e5458a0b89f2755e0ee8c0c77613fe5273e05f337907874d64f13171a898a7ff"}, + {file = "pip-24.2-py3-none-any.whl", hash = "sha256:2cd581cf58ab7fcfca4ce8efa6dcacd0de5bf8d0a3eb9ec927e07405f4d9e2a2"}, + {file = "pip-24.2.tar.gz", hash = "sha256:5b5e490b5e9cb275c879595064adce9ebd31b854e3e803740b72f9ccf34a45b8"}, ] [[package]] @@ -1379,13 +1391,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.7.1" +version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, - {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, + {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, + {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, ] [package.dependencies] @@ -1397,12 +1409,12 @@ virtualenv = ">=20.10.0" [[package]] name = "puyapy" -version = "2.1.2" +version = "2.2.0" description = "An optimising compiler for Algorand Python" optional = false python-versions = "<4.0,>=3.12" files = [ - {file = "puyapy-2.1.2-py3-none-any.whl", hash = "sha256:33ea55aebf66cae8f3600ae8a48ec4449549ef8aa185581c6bbed13303f04a96"}, + {file = "puyapy-2.2.0-py3-none-any.whl", hash = "sha256:62bfd71bdbd67609cff2a75797671f32dec0eaae3a200045f2fe2f863181f93d"}, ] [package.dependencies] @@ -1554,20 +1566,20 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "8.2.2" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, - {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.5,<2.0" +pluggy = ">=1.5,<2" [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] @@ -1722,29 +1734,29 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "ruff" -version = "0.5.2" +version = "0.5.5" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.5.2-py3-none-linux_armv6l.whl", hash = "sha256:7bab8345df60f9368d5f4594bfb8b71157496b44c30ff035d1d01972e764d3be"}, - {file = "ruff-0.5.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:1aa7acad382ada0189dbe76095cf0a36cd0036779607c397ffdea16517f535b1"}, - {file = "ruff-0.5.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:aec618d5a0cdba5592c60c2dee7d9c865180627f1a4a691257dea14ac1aa264d"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b62adc5ce81780ff04077e88bac0986363e4a3260ad3ef11ae9c14aa0e67ef"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dc42ebf56ede83cb080a50eba35a06e636775649a1ffd03dc986533f878702a3"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c15c6e9f88c67ffa442681365d11df38afb11059fc44238e71a9d9f1fd51de70"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d3de9a5960f72c335ef00763d861fc5005ef0644cb260ba1b5a115a102157251"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe5a968ae933e8f7627a7b2fc8893336ac2be0eb0aace762d3421f6e8f7b7f83"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a04f54a9018f75615ae52f36ea1c5515e356e5d5e214b22609ddb546baef7132"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed02fb52e3741f0738db5f93e10ae0fb5c71eb33a4f2ba87c9a2fa97462a649"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3cf8fe659f6362530435d97d738eb413e9f090e7e993f88711b0377fbdc99f60"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:237a37e673e9f3cbfff0d2243e797c4862a44c93d2f52a52021c1a1b0899f846"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2a2949ce7c1cbd8317432ada80fe32156df825b2fd611688814c8557824ef060"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:481af57c8e99da92ad168924fd82220266043c8255942a1cb87958b108ac9335"}, - {file = "ruff-0.5.2-py3-none-win32.whl", hash = "sha256:f1aea290c56d913e363066d83d3fc26848814a1fed3d72144ff9c930e8c7c718"}, - {file = "ruff-0.5.2-py3-none-win_amd64.whl", hash = "sha256:8532660b72b5d94d2a0a7a27ae7b9b40053662d00357bb2a6864dd7e38819084"}, - {file = "ruff-0.5.2-py3-none-win_arm64.whl", hash = "sha256:73439805c5cb68f364d826a5c5c4b6c798ded6b7ebaa4011f01ce6c94e4d5583"}, - {file = "ruff-0.5.2.tar.gz", hash = "sha256:2c0df2d2de685433794a14d8d2e240df619b748fbe3367346baa519d8e6f1ca2"}, + {file = "ruff-0.5.5-py3-none-linux_armv6l.whl", hash = "sha256:605d589ec35d1da9213a9d4d7e7a9c761d90bba78fc8790d1c5e65026c1b9eaf"}, + {file = "ruff-0.5.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00817603822a3e42b80f7c3298c8269e09f889ee94640cd1fc7f9329788d7bf8"}, + {file = "ruff-0.5.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:187a60f555e9f865a2ff2c6984b9afeffa7158ba6e1eab56cb830404c942b0f3"}, + {file = "ruff-0.5.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe26fc46fa8c6e0ae3f47ddccfbb136253c831c3289bba044befe68f467bfb16"}, + {file = "ruff-0.5.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ad25dd9c5faac95c8e9efb13e15803cd8bbf7f4600645a60ffe17c73f60779b"}, + {file = "ruff-0.5.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f70737c157d7edf749bcb952d13854e8f745cec695a01bdc6e29c29c288fc36e"}, + {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:cfd7de17cef6ab559e9f5ab859f0d3296393bc78f69030967ca4d87a541b97a0"}, + {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a09b43e02f76ac0145f86a08e045e2ea452066f7ba064fd6b0cdccb486f7c3e7"}, + {file = "ruff-0.5.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0b856cb19c60cd40198be5d8d4b556228e3dcd545b4f423d1ad812bfdca5884"}, + {file = "ruff-0.5.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3687d002f911e8a5faf977e619a034d159a8373514a587249cc00f211c67a091"}, + {file = "ruff-0.5.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ac9dc814e510436e30d0ba535f435a7f3dc97f895f844f5b3f347ec8c228a523"}, + {file = "ruff-0.5.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:af9bdf6c389b5add40d89b201425b531e0a5cceb3cfdcc69f04d3d531c6be74f"}, + {file = "ruff-0.5.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d40a8533ed545390ef8315b8e25c4bb85739b90bd0f3fe1280a29ae364cc55d8"}, + {file = "ruff-0.5.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cab904683bf9e2ecbbe9ff235bfe056f0eba754d0168ad5407832928d579e7ab"}, + {file = "ruff-0.5.5-py3-none-win32.whl", hash = "sha256:696f18463b47a94575db635ebb4c178188645636f05e934fdf361b74edf1bb2d"}, + {file = "ruff-0.5.5-py3-none-win_amd64.whl", hash = "sha256:50f36d77f52d4c9c2f1361ccbfbd09099a1b2ea5d2b2222c586ab08885cf3445"}, + {file = "ruff-0.5.5-py3-none-win_arm64.whl", hash = "sha256:3191317d967af701f1b73a31ed5788795936e423b7acce82a2b63e26eb3e89d6"}, + {file = "ruff-0.5.5.tar.gz", hash = "sha256:cc5516bdb4858d972fbc31d246bdb390eab8df1a26e2353be2dbc0c2d7f5421a"}, ] [[package]] @@ -1782,18 +1794,18 @@ files = [ [[package]] name = "structlog" -version = "24.2.0" +version = "24.4.0" description = "Structured Logging for Python" optional = false python-versions = ">=3.8" files = [ - {file = "structlog-24.2.0-py3-none-any.whl", hash = "sha256:983bd49f70725c5e1e3867096c0c09665918936b3db27341b41d294283d7a48a"}, - {file = "structlog-24.2.0.tar.gz", hash = "sha256:0e3fe74924a6d8857d3f612739efb94c72a7417d7c7c008d12276bca3b5bf13b"}, + {file = "structlog-24.4.0-py3-none-any.whl", hash = "sha256:597f61e80a91cc0749a9fd2a098ed76715a1c8a01f73e336b746504d1aad7610"}, + {file = "structlog-24.4.0.tar.gz", hash = "sha256:b27bfecede327a6d2da5fbc96bd859f114ecc398a6389d664f62085ee7ae6fc4"}, ] [package.extras] dev = ["freezegun (>=0.2.8)", "mypy (>=1.4)", "pretend", "pytest (>=6.0)", "pytest-asyncio (>=0.17)", "rich", "simplejson", "twisted"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "sphinxext-opengraph", "twisted"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "sphinxext-opengraph", "twisted"] tests = ["freezegun (>=0.2.8)", "pretend", "pytest (>=6.0)", "pytest-asyncio (>=0.17)", "simplejson"] typing = ["mypy (>=1.4)", "rich", "twisted"] @@ -2052,4 +2064,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "cdd7b9c7fe32057624676a924b8b4f48979b341d543957652d3385a4491cf4cd" +content-hash = "419017fd8cfabc5441f3341555559777d7d09e6854947282a968db3d30f70340" diff --git a/assets/arc-0062/pyproject.toml b/assets/arc-0062/pyproject.toml index 10e4bded5..7b860d373 100644 --- a/assets/arc-0062/pyproject.toml +++ b/assets/arc-0062/pyproject.toml @@ -13,9 +13,9 @@ algorand-python = "^1.0.0" algorand-python-testing = "^0.2.1" [tool.poetry.group.dev.dependencies] -algokit-client-generator = "^1.1.3" +algokit-client-generator = "^1.1.6" black = {extras = ["d"], version = "*"} -ruff = "^0.5.2" +ruff = "^0.5.5" mypy = "*" pytest = "*" pytest-cov = "*" diff --git a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json index e943f1bba..342654199 100644 --- a/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json +++ b/assets/arc-0062/smart_contracts/artifacts/circulating_supply/CirculatingSupply.arc32.json @@ -71,6 +71,7 @@ "desc": "ASA ID of the circulating supply" } ], + "readonly": false, "returns": { "type": "void" }, @@ -90,6 +91,7 @@ "desc": "Not-circulating label selector" } ], + "readonly": false, "returns": { "type": "void" }, @@ -104,6 +106,7 @@ "desc": "ASA ID of the circulating supply" } ], + "readonly": true, "returns": { "type": "uint64", "desc": "ASA circulating supply" 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 index 3f6dc67c6..8565aca98 100644 --- 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 @@ -171,7 +171,7 @@ def _as_dict(data: typing.Any, *, convert_all: bool = True) -> dict[str, typing. if not dataclasses.is_dataclass(data): raise TypeError(f"{data} must be a dataclass") if convert_all: - result = dataclasses.asdict(data) + result = dataclasses.asdict(data) # type: ignore[call-overload] else: result = {f.name: getattr(data, f.name) for f in dataclasses.fields(data)} return _filter_none(result) From eb9993fc20f55844537f98935e6756ccb9e9dfa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 2 Aug 2024 16:35:34 +0200 Subject: [PATCH 23/60] Removing padding for the ARC number --- ARCs/arc-0002.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index 933665be5..c28664c5d 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -2,7 +2,7 @@ arc: 2 title: Algorand Transaction Note Field Conventions description: Conventions for encoding data in the note field at application-level -author: Fabrice Benhamouda (@fabrice102) +author: Fabrice Benhamouda (@fabrice102), Stéphane BARROSO (@SudoWeezy), Cosimo BASSI (@cusma) discussions-to: https://github.com/algorandfoundation/ARCs/issues/2 status: Final type: Standards Track @@ -41,12 +41,9 @@ where: * Names starting with `a/` and `af/` are reserved for the Algorand protocol and the Algorand Foundation uses. - `` is the number of the ARC with 0 padding: - - Regexp to satisfy: `0\d{3}|\d{4}` - - Only contain a four-digit number, either zero-padded or not, matching: - - 0\d{3} for zero-padded numbers (e.g., 0001, 0456). - - \d{4} for non-padded four-digit numbers (e.g., 1234, 5678). - - Be exactly four digits long. - + - Regexp to satisfy: `\b(0|[1-9]\d*)\b`: + - Only contain a digit number, without any padding + * `` is one of the following: * `m`: MsgPack * `j`: JSON From 50d72eb11c35d8c0afe5a4e16217400dd0c09300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 2 Aug 2024 16:54:56 +0200 Subject: [PATCH 24/60] Update arc-0002.md --- ARCs/arc-0002.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index c28664c5d..bc50de2b6 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -40,9 +40,9 @@ where: * be at most 32 characters long * Names starting with `a/` and `af/` are reserved for the Algorand protocol and the Algorand Foundation uses. -- `` is the number of the ARC with 0 padding: +- `` is the number of the ARC: - Regexp to satisfy: `\b(0|[1-9]\d*)\b`: - - Only contain a digit number, without any padding + - Only contain a digit number, without any 0 padding * `` is one of the following: * `m`: MsgPack From c0c605dd58c4c6f8bc8052f9d783cf7ced4325be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 2 Aug 2024 18:04:37 +0200 Subject: [PATCH 25/60] Formating --- ARCs/arc-0002.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index bc50de2b6..e5df3a79f 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -40,10 +40,11 @@ where: * be at most 32 characters long * Names starting with `a/` and `af/` are reserved for the Algorand protocol and the Algorand Foundation uses. -- `` is the number of the ARC: - - Regexp to satisfy: `\b(0|[1-9]\d*)\b`: - - Only contain a digit number, without any 0 padding - +* `` is the number of the ARC: + * Regexp to satisfy: `\b(0|[1-9]\d*)\b` + In other words, an arc-number should: + * Only contain a digit number, without any padding + * `` is one of the following: * `m`: MsgPack * `j`: JSON From 0f510cb3397d81a373d72a787ea8d6540e8fdc27 Mon Sep 17 00:00:00 2001 From: cusma Date: Fri, 2 Aug 2024 18:40:50 +0200 Subject: [PATCH 26/60] feat: remove algokit generator templates --- .../generators/create_contract/copier.yaml | 10 ---- .../{{ contract_name }}/contract.py.j2 | 9 ---- .../{{ contract_name }}/deploy_config.py.j2 | 35 ------------- .../generators/create_env_file/copier.yaml | 49 ------------------- ... %}.env.{{custom_network_name}}{% endif %} | 7 --- ... if is_localnet %}.env.localnet{% endif %} | 7 --- ...{% if is_mainnet %}.env.mainnet{% endif %} | 3 -- ...{% if is_testnet %}.env.testnet{% endif %} | 3 -- 8 files changed, 123 deletions(-) delete mode 100644 assets/arc-0062/.algokit/generators/create_contract/copier.yaml delete mode 100644 assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 delete mode 100644 assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 delete mode 100644 assets/arc-0062/.algokit/generators/create_env_file/copier.yaml delete mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} delete mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} delete mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} delete mode 100644 assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} diff --git a/assets/arc-0062/.algokit/generators/create_contract/copier.yaml b/assets/arc-0062/.algokit/generators/create_contract/copier.yaml deleted file mode 100644 index 73805de04..000000000 --- a/assets/arc-0062/.algokit/generators/create_contract/copier.yaml +++ /dev/null @@ -1,10 +0,0 @@ -_tasks: - - "echo '==== Successfully initialized new smart contract 🚀 ===='" - -contract_name: - type: str - help: Name of your new contract. - placeholder: "my-new-contract" - default: "my-new-contract" - -_templates_suffix: ".j2" diff --git a/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 b/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 deleted file mode 100644 index 829e3a038..000000000 --- a/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/contract.py.j2 +++ /dev/null @@ -1,9 +0,0 @@ -# pyright: reportMissingModuleSource=false -from algopy import ARC4Contract, String -from algopy.arc4 import abimethod - - -class {{ contract_name.split('_')|map('capitalize')|join }}(ARC4Contract): - @abimethod() - def hello(self, name: String) -> String: - return "Hello, " + name diff --git a/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 b/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 deleted file mode 100644 index eb726b9dd..000000000 --- a/assets/arc-0062/.algokit/generators/create_contract/smart_contracts/{{ contract_name }}/deploy_config.py.j2 +++ /dev/null @@ -1,35 +0,0 @@ -import logging - -import algokit_utils -from algosdk.v2client.algod import AlgodClient -from algosdk.v2client.indexer import IndexerClient - -logger = logging.getLogger(__name__) - - -# define deployment behaviour based on supplied app spec -def deploy( - algod_client: AlgodClient, - indexer_client: IndexerClient, - app_spec: algokit_utils.ApplicationSpecification, - deployer: algokit_utils.Account, -) -> None: - from smart_contracts.artifacts.{{ contract_name }}.{{ contract_name }}_client import ( - {{ contract_name.split('_')|map('capitalize')|join }}Client, - ) - - app_client = {{ contract_name.split('_')|map('capitalize')|join }}Client( - algod_client, - creator=deployer, - indexer_client=indexer_client, - ) - app_client.deploy( - on_schema_break=algokit_utils.OnSchemaBreak.AppendApp, - on_update=algokit_utils.OnUpdate.AppendApp, - ) - name = "world" - response = app_client.hello(name=name) - logger.info( - f"Called hello on {app_spec.contract.name} ({app_client.app_id}) " - f"with name={name}, received: {response.return_value}" - ) diff --git a/assets/arc-0062/.algokit/generators/create_env_file/copier.yaml b/assets/arc-0062/.algokit/generators/create_env_file/copier.yaml deleted file mode 100644 index afa2cace0..000000000 --- a/assets/arc-0062/.algokit/generators/create_env_file/copier.yaml +++ /dev/null @@ -1,49 +0,0 @@ -_tasks: - - "echo '==== Successfully generated new .env file 🚀 ===='" - -target_network: - type: str - help: Name of your target network. - choices: - - mainnet - - testnet - - localnet - - custom - default: "localnet" - when: "{{ not use_generic_env }}" - -custom_network_name: - type: str - help: Name of your custom Algorand network. - placeholder: "custom" - when: "{{ not use_generic_env and target_network == 'custom' }}" - -is_localnet: - type: bool - help: Whether to deploy on localnet. - placeholder: "true" - default: "{{ target_network == 'localnet' and not use_generic_env }}" - when: 'false' - -is_testnet: - type: bool - help: Whether to deploy on testnet. - placeholder: "true" - default: "{{ target_network == 'testnet' and not use_generic_env }}" - when: 'false' - -is_mainnet: - type: bool - help: Whether to deploy on mainnet. - placeholder: "true" - default: "{{ target_network == 'mainnet' and not use_generic_env }}" - when: 'false' - -is_customnet: - type: bool - help: Whether to deploy on custom network. - placeholder: "true" - default: "{{ target_network == 'custom' and not use_generic_env }}" - when: 'false' - -_templates_suffix: ".j2" diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} deleted file mode 100644 index cfc9f21ec..000000000 --- a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_customnet %}.env.{{custom_network_name}}{% endif %} +++ /dev/null @@ -1,7 +0,0 @@ -# this file contains algorand network settings for interacting with testnet via algonode -ALGOD_TOKEN={YOUR_ALGOD_TOKEN} -ALGOD_SERVER={YOUR_ALGOD_SERVER_URL} -ALGOD_PORT={YOUR_ALGOD_PORT} -INDEXER_TOKEN={YOUR_INDEXER_TOKEN} -INDEXER_SERVER={YOUR_INDEXER_SERVER_URL} -INDEXER_PORT={YOUR_INDEXER_PORT} diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} deleted file mode 100644 index fcbf442dd..000000000 --- a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_localnet %}.env.localnet{% endif %} +++ /dev/null @@ -1,7 +0,0 @@ -# this file should contain environment variables specific to algokit localnet -ALGOD_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ALGOD_SERVER=http://localhost -ALGOD_PORT=4001 -INDEXER_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -INDEXER_SERVER=http://localhost -INDEXER_PORT=8980 diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} deleted file mode 100644 index bb9a78733..000000000 --- a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_mainnet %}.env.mainnet{% endif %} +++ /dev/null @@ -1,3 +0,0 @@ -# this file contains algorand network settings for interacting with testnet via algonode -ALGOD_SERVER=https://mainnet-api.algonode.cloud -INDEXER_SERVER=https://mainnet-idx.algonode.cloud diff --git a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} b/assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} deleted file mode 100644 index eeea43d7f..000000000 --- a/assets/arc-0062/.algokit/generators/create_env_file/{% if is_testnet %}.env.testnet{% endif %} +++ /dev/null @@ -1,3 +0,0 @@ -# this file contains algorand network settings for interacting with testnet via algonode -ALGOD_SERVER=https://testnet-api.algonode.cloud -INDEXER_SERVER=https://testnet-idx.algonode.cloud From 09f79db273a32f49ea93ed29729f1183e8196794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Mon, 5 Aug 2024 16:05:32 +0200 Subject: [PATCH 27/60] Apply suggestions from code review Fix format Last name/Arc Co-authored-by: Cosimo Bassi <65770425+cusma@users.noreply.github.com> --- ARCs/arc-0002.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index e5df3a79f..92698ab5b 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -2,7 +2,7 @@ arc: 2 title: Algorand Transaction Note Field Conventions description: Conventions for encoding data in the note field at application-level -author: Fabrice Benhamouda (@fabrice102), Stéphane BARROSO (@SudoWeezy), Cosimo BASSI (@cusma) +author: Fabrice Benhamouda (@fabrice102), Stéphane Barroso (@SudoWeezy), Cosimo Bassi (@cusma) discussions-to: https://github.com/algorandfoundation/ARCs/issues/2 status: Final type: Standards Track @@ -54,7 +54,7 @@ where: **WARNING**: Any user can create transactions with arbitrary data and may impersonate other dApps. In particular, the fact that a note field start with `` does not guarantee that it indeed comes from this dApp. The value `` cannot be relied upon to ensure provenance and validity of the ``. -**WARNING**: Any user can create transactions with arbitrary data, including arc numbers, which may not correspond to the intended standard. An arc number included in a note field does not ensure compliance with the corresponding standard. The value of the arc number cannot be relied upon to ensure the provenance and validity of the . +**WARNING**: Any user can create transactions with arbitrary data, including ARC numbers, which may not correspond to the intended standard. An ARC number included in a note field does not ensure compliance with the corresponding standard. The value of the ARC number cannot be relied upon to ensure the provenance and validity of the . ### Versioning From 8a9a4684ec360eba3b63598fbe6fbcd6953c4102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Mon, 5 Aug 2024 16:12:18 +0200 Subject: [PATCH 28/60] Status -> Last Call --- ARCs/arc-0062.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index b2fe38d7a..fe9c4cc39 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -4,7 +4,8 @@ title: ASA Circulating Supply description: Getter method for ASA circulating supply author: Cosimo Bassi (@cusma) discussions-to: https://github.com/algorandfoundation/ARCs/issues/302 -status: Review +status: Last Call +last-call-deadline: 2024-08-30 type: Standards Track category: Interface created: 2024-06-12 From b95c6faace98b866cd88a3991291bcc5f4b2b1d4 Mon Sep 17 00:00:00 2001 From: cusma Date: Mon, 5 Aug 2024 18:29:49 +0200 Subject: [PATCH 29/60] doc: add specs for C2C calls, update "requires" field, conform to new ARC-2 --- ARCs/arc-0062.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index fe9c4cc39..4eb14f742 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -9,7 +9,7 @@ last-call-deadline: 2024-08-30 type: Standards Track category: Interface created: 2024-06-12 -requires: 4, 22 +requires: 2, 4, 22, (56) --- ## Abstract @@ -100,8 +100,11 @@ method (getter). Getter calls **SHOULD** be _simulated_. -External resources used by the implementation (if any) **SHOULD** be discovered -and auto-populated by the simulated method call. +Any external resources used by the implementation **SHOULD** be discovered and +auto-populated by the simulated getter call. + +If the getter supports **on-chain** calls (i.e. "Contract-2-Contract") and the implementation +uses external resources, the Circulating Supply App **MUST** conform to ([ARC-56](./arc-0056.md)). #### Example 1 @@ -196,7 +199,7 @@ method for that ASA. 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: -- The `` **MUST** be equal to `arc62`; +- The `` **MUST** be equal to `62`; - The **RECOMMENDED** `` are MsgPack (`m`) or JSON (`j`); - The `` **MUST** specify `application-id` equal to the Circulating Supply @@ -220,9 +223,14 @@ This section suggests a reference implementation of the Circulating Supply App. An Algorand-Python example is available [here](../assets/arc-0062). +### Recommendations + An ASA using the reference implementation **SHOULD NOT** assign the Reserve Address 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. From 4cffb655c2928ebd562a19c512cf2ed210df7ff9 Mon Sep 17 00:00:00 2001 From: cusma Date: Mon, 5 Aug 2024 18:34:26 +0200 Subject: [PATCH 30/60] doc: not such a thing as "optional" required ARCs --- ARCs/arc-0062.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 4eb14f742..dd3aa8b2a 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -9,7 +9,7 @@ last-call-deadline: 2024-08-30 type: Standards Track category: Interface created: 2024-06-12 -requires: 2, 4, 22, (56) +requires: 2, 4, 22, 56 --- ## Abstract From 21e5b0aba3d426b1a6c91d76fb9257387271d186 Mon Sep 17 00:00:00 2001 From: cusma Date: Mon, 5 Aug 2024 18:38:31 +0200 Subject: [PATCH 31/60] doc: nit --- ARCs/arc-0062.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index dd3aa8b2a..342f3259c 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -104,7 +104,7 @@ Any external resources used by the implementation **SHOULD** be discovered and auto-populated by the simulated getter call. If the getter supports **on-chain** calls (i.e. "Contract-2-Contract") and the implementation -uses external resources, the Circulating Supply App **MUST** conform to ([ARC-56](./arc-0056.md)). +uses external resources, the Circulating Supply App **MUST** conform to [ARC-56](./arc-0056.md). #### Example 1 From dd80d72739ba18689a18cedb4c710ac38324e504 Mon Sep 17 00:00:00 2001 From: cusma Date: Mon, 5 Aug 2024 18:56:38 +0200 Subject: [PATCH 32/60] doc: disable direct link to ARC-56 (to be released) --- ARCs/arc-0062.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 342f3259c..51718e6b5 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -104,7 +104,7 @@ Any external resources used by the implementation **SHOULD** be discovered and auto-populated by the simulated getter call. If the getter supports **on-chain** calls (i.e. "Contract-2-Contract") and the implementation -uses external resources, the Circulating Supply App **MUST** conform to [ARC-56](./arc-0056.md). +uses external resources, the Circulating Supply App **MUST** conform to ARC-56. #### Example 1 From 03afdd4983a4036177860bc3c548d3174b8ba5d0 Mon Sep 17 00:00:00 2001 From: cusma Date: Mon, 5 Aug 2024 19:11:35 +0200 Subject: [PATCH 33/60] doc: re-enable direct link to ARC-56 --- ARCs/arc-0062.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 51718e6b5..342f3259c 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -104,7 +104,7 @@ Any external resources used by the implementation **SHOULD** be discovered and auto-populated by the simulated getter call. If the getter supports **on-chain** calls (i.e. "Contract-2-Contract") and the implementation -uses external resources, the Circulating Supply App **MUST** conform to ARC-56. +uses external resources, the Circulating Supply App **MUST** conform to [ARC-56](./arc-0056.md). #### Example 1 From 02949a48c8f687c17439a806c4bd540dee276f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 9 Aug 2024 10:22:50 +0200 Subject: [PATCH 34/60] Adding ARC-Example --- ARCs/arc-0002.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index 92698ab5b..269f5fd50 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -87,6 +87,15 @@ The restrictions on dApp names were chosen to allow most usual names while avoid > This section is non-normative. +Consider ARC-20, that provides information about Smart ASA's Application. + +Here a potential note indicating that the Application ID is 123: + +* JSON without version: + ``` + arc20:j{"application-id":123} + ``` + Consider a dApp named `algoCityTemp` that stores temperatures from cities on the blockchain. Here are some potential notes indicating that Singapore's temperature is 35 degree Celsius: From 2e70d0859952a0580b671a1bbdd8a17663618627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 9 Aug 2024 10:28:52 +0200 Subject: [PATCH 35/60] Fix Arc links --- ARCs/arc-0002.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index 269f5fd50..feedc89e4 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -87,7 +87,7 @@ The restrictions on dApp names were chosen to allow most usual names while avoid > This section is non-normative. -Consider ARC-20, that provides information about Smart ASA's Application. +Consider [ARC-20]('./arc-0020.md'), that provides information about Smart ASA's Application. Here a potential note indicating that the Application ID is 123: From 9b385f5a95239ff11ccd5a0c00963a7f323838c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 9 Aug 2024 10:30:39 +0200 Subject: [PATCH 36/60] Fix link format --- ARCs/arc-0002.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index feedc89e4..5d4f9f705 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -87,7 +87,7 @@ The restrictions on dApp names were chosen to allow most usual names while avoid > This section is non-normative. -Consider [ARC-20]('./arc-0020.md'), that provides information about Smart ASA's Application. +Consider [ARC-20](./arc-0020.md), that provides information about Smart ASA's Application. Here a potential note indicating that the Application ID is 123: From 0265353c36fab6925309d82cb9585a91549d8271 Mon Sep 17 00:00:00 2001 From: cusma Date: Fri, 9 Aug 2024 10:58:14 +0200 Subject: [PATCH 37/60] doc: relax ARC-56 requirement --- ARCs/arc-0062.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ARCs/arc-0062.md b/ARCs/arc-0062.md index 342f3259c..7b5a100d7 100644 --- a/ARCs/arc-0062.md +++ b/ARCs/arc-0062.md @@ -103,8 +103,8 @@ Getter calls **SHOULD** be _simulated_. Any external resources used by the implementation **SHOULD** be discovered and auto-populated by the simulated getter call. -If the getter supports **on-chain** calls (i.e. "Contract-2-Contract") and the implementation -uses external resources, the Circulating Supply App **MUST** conform to [ARC-56](./arc-0056.md). +If the getter supports *on-chain* calls (i.e. "Contract-2-Contract") and the implementation +uses external resources, the Circulating Supply App **SHOULD** conform to [ARC-56](./arc-0056.md). #### Example 1 From 84ad545539550d4a7260503f42693671ed3b5719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Tue, 27 Aug 2024 09:52:25 +0200 Subject: [PATCH 38/60] Deprecating ARCs --- ARCs/arc-0006.md | 3 ++- ARCs/arc-0007.md | 3 ++- ARCs/arc-0008.md | 3 ++- ARCs/arc-0009.md | 3 ++- ARCs/arc-0010.md | 3 ++- ARCs/arc-0011.md | 3 ++- ARCs/arc-0015.md | 3 ++- ARCs/arc-0076.md | 3 ++- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ARCs/arc-0006.md b/ARCs/arc-0006.md index 56075f2f9..8dd478d47 100644 --- a/ARCs/arc-0006.md +++ b/ARCs/arc-0006.md @@ -4,10 +4,11 @@ title: Algorand Wallet Address Discovery API description: API function, enable, which allows the discovery of accounts author: DanBurton (@DanBurton) discussions-to: https://github.com/algorandfoundation/ARCs/issues/52 -status: Final +status: Deprecated type: Standards Track category: Interface created: 2021-08-09 +superseded-by: --- # Algorand Wallet Address Discovery API diff --git a/ARCs/arc-0007.md b/ARCs/arc-0007.md index 4f971d8f5..6bd2696a9 100644 --- a/ARCs/arc-0007.md +++ b/ARCs/arc-0007.md @@ -4,10 +4,11 @@ title: Algorand Wallet Post Transactions API description: API function to Post Signed Transactions to the network. author: DanBurton (@DanBurton) discussions-to: https://github.com/algorandfoundation/ARCs/issues/52 -status: Final +status: Deprecated type: Standards Track category: Interface created: 2021-08-09 +superseded-by: --- # Algorand Wallet Post Transactions API diff --git a/ARCs/arc-0008.md b/ARCs/arc-0008.md index c51b1f432..cbf7f5cb4 100644 --- a/ARCs/arc-0008.md +++ b/ARCs/arc-0008.md @@ -4,10 +4,11 @@ title: Algorand Wallet Sign and Post API description: A function used to simultaneously sign and post transactions to the network. author: DanBurton (@DanBurton) discussions-to: https://github.com/algorandfoundation/ARCs/issues/52 -status: Final +status: Deprecated type: Standards Track category: Interface created: 2021-08-09 +superseded-by: --- # Algorand Wallet Sign and Post API diff --git a/ARCs/arc-0009.md b/ARCs/arc-0009.md index afed84691..b60dfcbf7 100644 --- a/ARCs/arc-0009.md +++ b/ARCs/arc-0009.md @@ -4,10 +4,11 @@ title: Algorand Wallet Algodv2 and Indexer API description: An API for accessing Algod and Indexer through a user's preferred connection. author: DanBurton (@DanBurton) discussions-to: https://github.com/algorandfoundation/ARCs/issues/52 -status: Final +status: Deprecated type: Standards Track category: Interface created: 2021-08-09 +superseded-by: --- # Algorand Wallet Algodv2 and Indexer API diff --git a/ARCs/arc-0010.md b/ARCs/arc-0010.md index 212612d02..b276d70d0 100644 --- a/ARCs/arc-0010.md +++ b/ARCs/arc-0010.md @@ -4,10 +4,11 @@ title: Algorand Wallet Reach Minimum Requirements description: Minimum requirements for Reach to function with a given wallet. author: DanBurton (@DanBurton) discussions-to: https://github.com/algorandfoundation/ARCs/issues/52 -status: Final +status: Deprecated type: Standards Track category: Interface created: 2021-08-09 +superseded-by: --- # Algorand Wallet Reach Minimum Requirements diff --git a/ARCs/arc-0011.md b/ARCs/arc-0011.md index 8401b1538..fc14fcb0a 100644 --- a/ARCs/arc-0011.md +++ b/ARCs/arc-0011.md @@ -4,10 +4,11 @@ title: Algorand Wallet Reach Browser Spec description: Convention for DApps to discover Algorand wallets in browser author: DanBurton (@DanBurton) discussions-to: https://github.com/algorandfoundation/ARCs/issues/52 -status: Final +status: Deprecated type: Standards Track category: Interface created: 2021-08-09 +superseded-by: --- # Algorand Wallet Reach Browser Spec diff --git a/ARCs/arc-0015.md b/ARCs/arc-0015.md index e77423664..3c359ae4b 100644 --- a/ARCs/arc-0015.md +++ b/ARCs/arc-0015.md @@ -4,11 +4,12 @@ title: Encrypted Short Messages description: Scheme for encryption/decryption that allows for private messages. author: Stéphane Barroso (@sudoweezy), Paweł Pierścionek (@urtho) discussions-to: https://github.com/algorandfoundation/ARCs/issues/* -status: Final +status: Deprecated type: Standards Track category: Interface created: 2022-11-21 requires: 4 +superseded-by: --- # Encrypted Short Messages diff --git a/ARCs/arc-0076.md b/ARCs/arc-0076.md index 7ede5fea4..4989557e7 100644 --- a/ARCs/arc-0076.md +++ b/ARCs/arc-0076.md @@ -4,10 +4,11 @@ title: Password Account description: Password account using PBKDF2 author: Ludovit Scholtz (@scholtz) discussions-to: https://github.com/algorandfoundation/ARCs/issues/208 -status: Final +status: Deprecated type: Standards Track category: Core created: 2023-06-12 +superseded-by: --- ## Abstract From 1a4be4915075ce0f8cafae2be2f4c734f0047654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 30 Aug 2024 15:13:20 +0200 Subject: [PATCH 39/60] ARC-59 Final --- ARCs/arc-0059.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ARCs/arc-0059.md b/ARCs/arc-0059.md index 735689fa1..d90d2b029 100644 --- a/ARCs/arc-0059.md +++ b/ARCs/arc-0059.md @@ -4,8 +4,7 @@ title: ASA Inbox Router description: An application that can route ASAs to users or hold them to later be claimed author: Kadir Can Çetin (@kadircancetin), Yigit Guler (@yigitguler), Joe Polny (@joe-p), Kevin Wellenzohn (@k13n), Brian Whippo (@silentrhetoric) discussions-to: https://github.com/algorandfoundation/ARCs/issues/285 -status: Last Call -last-call-deadline: 2024-07-21 +status: Final type: Standards Track category: ARC created: 2024-03-08 From d90267933b68d84ef2e1881b3d750799ae34f0c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 30 Aug 2024 16:35:37 +0200 Subject: [PATCH 40/60] Let ARC-76 in Final until we have another solution --- ARCs/arc-0076.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCs/arc-0076.md b/ARCs/arc-0076.md index 4989557e7..822213cac 100644 --- a/ARCs/arc-0076.md +++ b/ARCs/arc-0076.md @@ -4,7 +4,7 @@ title: Password Account description: Password account using PBKDF2 author: Ludovit Scholtz (@scholtz) discussions-to: https://github.com/algorandfoundation/ARCs/issues/208 -status: Deprecated +status: Final type: Standards Track category: Core created: 2023-06-12 From c17f952353b88516774e1f9891207d64528dc543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Fri, 30 Aug 2024 16:36:40 +0200 Subject: [PATCH 41/60] Update arc-0076.md --- ARCs/arc-0076.md | 1 - 1 file changed, 1 deletion(-) diff --git a/ARCs/arc-0076.md b/ARCs/arc-0076.md index 822213cac..7ede5fea4 100644 --- a/ARCs/arc-0076.md +++ b/ARCs/arc-0076.md @@ -8,7 +8,6 @@ status: Final type: Standards Track category: Core created: 2023-06-12 -superseded-by: --- ## Abstract From df8c42da26daabcffa12b2d8916210c2ce6c98e1 Mon Sep 17 00:00:00 2001 From: "Rob Moore (MakerX)" Date: Fri, 6 Sep 2024 15:58:05 +0800 Subject: [PATCH 42/60] docs: Correcting ARC-32 deprecation note --- ARCs/arc-0032.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ARCs/arc-0032.md b/ARCs/arc-0032.md index ce7fbff94..422f872d0 100644 --- a/ARCs/arc-0032.md +++ b/ARCs/arc-0032.md @@ -13,7 +13,8 @@ requires: 4, 21 ## Abstract -This specification is subsided by the `[ARC-56](./arc-0056.md)` +> [!NOTE] +> This specification will be eventually deprecated by the [`ARC-56`](https://github.com/algorandfoundation/ARCs/pull/258) specification. An Application is partially defined by it's [methods](./arc-0004.md) but further information about the Application should be available. Other descriptive elements of an application may include it's State Schema, the original TEAL source programs, default method arguments, and custom data types. This specification defines the descriptive elements of an Application that should be available to clients to provide useful information for an Application Client. From c3535e6d972a9528289f5296d1fee283c2d5f9de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Mon, 9 Sep 2024 09:50:29 +0200 Subject: [PATCH 43/60] updating ARC-56 link to fit the linter --- ARCs/arc-0032.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ARCs/arc-0032.md b/ARCs/arc-0032.md index 422f872d0..f7f2ef51a 100644 --- a/ARCs/arc-0032.md +++ b/ARCs/arc-0032.md @@ -14,13 +14,13 @@ requires: 4, 21 ## Abstract > [!NOTE] -> This specification will be eventually deprecated by the [`ARC-56`](https://github.com/algorandfoundation/ARCs/pull/258) specification. +> This specification will be eventually deprecated by the `ARC-56` specification. An Application is partially defined by it's [methods](./arc-0004.md) but further information about the Application should be available. Other descriptive elements of an application may include it's State Schema, the original TEAL source programs, default method arguments, and custom data types. This specification defines the descriptive elements of an Application that should be available to clients to provide useful information for an Application Client. ## Motivation -As more complex Applications are created and deployed, some consistent way to specify the details of the application and how to interact with it becomes more important. A specification to allow a consistent and complete definition of an application will help developers attempting to integrate an application they've never worked with before. +As more complex Applications are created and deployed, some consistent way to specify the details of the application and how to interact with it becomes more important. A specification to allow a consistent and complete definition of an application will help developers attempting to integrate an application they've never worked with before. ## Specification The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 822.. @@ -36,24 +36,24 @@ The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL ### Application Specification -The Application Specification is composed of a number of elements that serve to fully describe the Application. +The Application Specification is composed of a number of elements that serve to fully describe the Application. ```ts type AppSpec = { // embedded contract fields, see ARC-0004 for more contract: ARC4Contract; - + // the original teal source, containing annotations, base64 encoded source?: SourceSpec; // the schema this application requires/provides - schema?: SchemaSpec; + schema?: SchemaSpec; // supplemental information for calling bare methods bare_call_config?: CallConfigSpec; // supplemental information for calling ARC-0004 ABI methods hints: HintsSpec; // storage requirements - state?: StateSpec; + state?: StateSpec; } ``` @@ -75,7 +75,7 @@ type SourceSpec = { The schema of an application is critical to know prior to creation since it is immutable after create. It also helps clients of the application understand the data that is available to be queried from off chain. Individual fields can be referenced from the [default argument](#default-argument) to provide input data to a given ABI method. -While some fields are possible to know ahead of time, others may be keyed dynamically. In both cases the data type being stored MUST be known and declared ahead of time. +While some fields are possible to know ahead of time, others may be keyed dynamically. In both cases the data type being stored MUST be known and declared ahead of time. ```ts // The complete schema for this application @@ -129,7 +129,7 @@ type CallConfigSpec = { opt_in?: CallConfig close_out?: CallConfig update_application?: CallConfig - delete_application?: CallConfig + delete_application?: CallConfig } ``` @@ -140,7 +140,7 @@ Contains supplemental information about [ARC-0004](./arc-0004.md) ABI methods, e NOTE: Ideally this information would be part of the [ARC-0004](./arc-0004.md) ABI specification. ```ts -type HintSpec = { +type HintSpec = { // indicates the method has no side-effects and can be call via dry-run/simulate read_only?: bool; // describes the structure of arguments, key represents the argument name @@ -164,9 +164,9 @@ used by existing reference implementations such as Beaker #### Struct Specification -Each defined type is specified as an array of `StructElement`s. +Each defined type is specified as an array of `StructElement`s. -The ABI encoding is exactly as if an ABI Tuple type defined the same element types in the same order. +The ABI encoding is exactly as if an ABI Tuple type defined the same element types in the same order. It is important to encode the struct elements as an array since it preserves the order of fields which is critical to encoding/decoding the data properly. ```ts @@ -231,7 +231,7 @@ Two scenarios where providing default arguments can be useful: type ABIMethod = {}; type DefaultArgumentSpec = { - // Where to look for the default arg value + // Where to look for the default arg value source: "constant" | "global-state" | "local-state" | "abi-method" // extra data to include when looking up the value data: string | bigint | number | ABIMethod From a8cc5f3140b33dcdc6cdacf9f53466017a45dddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane?= Date: Thu, 12 Sep 2024 15:31:21 +0200 Subject: [PATCH 44/60] Adding ARC's sub-category Generate Devrel Content --- .github/workflows/dev-portal-content.yml | 72 ++++++++++ .github/workflows/dev-portal-pr.yml | 120 +++++++++++++++++ .gitignore | 3 +- ARC-template.md | 3 +- ARCs/arc-0000.md | 7 +- ARCs/arc-0001.md | 25 ++-- ARCs/arc-0002.md | 1 + ARCs/arc-0003.md | 13 +- ARCs/arc-0004.md | 47 +++---- ARCs/arc-0005.md | 5 +- ARCs/arc-0016.md | 1 + ARCs/arc-0018.md | 155 +++++++++++----------- ARCs/arc-0019.md | 33 ++--- ARCs/arc-0020.md | 1 + ARCs/arc-0021.md | 1 + ARCs/arc-0022.md | 1 + ARCs/arc-0023.md | 15 ++- ARCs/arc-0025.md | 5 +- ARCs/arc-0026.md | 19 +-- ARCs/arc-0028.md | 3 +- ARCs/arc-0032.md | 1 + ARCs/arc-0035.md | 15 ++- ARCs/arc-0036.md | 1 + ARCs/arc-0047.md | 15 ++- ARCs/arc-0054.md | 1 + ARCs/arc-0055.md | 1 + ARCs/arc-0059.md | 1 + ARCs/arc-0069.md | 21 +-- ARCs/arc-0072.md | 1 + ARCs/arc-0073.md | 1 + ARCs/arc-0074.md | 1 + ARCs/arc-0200.md | 3 +- _devportal/scripts/guidelines_template.md | 9 ++ _devportal/scripts/index_template.md | 56 ++++++++ _devportal/scripts/update-arcs.sh | 125 +++++++++++++++++ _devportal/scripts/update-guideline.sh | 104 +++++++++++++++ _devportal/scripts/update-index.sh | 125 +++++++++++++++++ 37 files changed, 826 insertions(+), 185 deletions(-) create mode 100644 .github/workflows/dev-portal-content.yml create mode 100644 .github/workflows/dev-portal-pr.yml create mode 100644 _devportal/scripts/guidelines_template.md create mode 100644 _devportal/scripts/index_template.md create mode 100755 _devportal/scripts/update-arcs.sh create mode 100755 _devportal/scripts/update-guideline.sh create mode 100755 _devportal/scripts/update-index.sh diff --git a/.github/workflows/dev-portal-content.yml b/.github/workflows/dev-portal-content.yml new file mode 100644 index 000000000..962191b55 --- /dev/null +++ b/.github/workflows/dev-portal-content.yml @@ -0,0 +1,72 @@ +name: Create Dev Portal Content + +on: + push: + branches: + - main # Trigger on changes to the main branch + paths: + - "ARCs/**" # Only run when files in the ARCs directory are changed + +jobs: + updateDevportal: + runs-on: ubuntu-latest + + steps: + # Step 1: Checkout the repository + - name: Checkout code + uses: actions/checkout@v2 + + # Step 2: Set execute permission for the scripts and create the content directory if needed + - name: Make scripts executable + run: | + chmod +x _devportal/scripts/update-arcs.sh + chmod +x _devportal/scripts/update-guideline.sh + chmod +x _devportal/scripts/update-index.sh + mkdir -p _devportal/content + + # Step 3: Set up Git identity + - name: Set up Git user + run: | + git config --global user.name 'github-actions' + git config --global user.email 'github-actions@github.com' + + # Step 4: Run update-arcs.sh script + - name: Run update-arcs.sh + run: _devportal/scripts/update-arcs.sh + + # Step 5: Run update-guideline.sh script + - name: Run update-guideline.sh + run: _devportal/scripts/update-guideline.sh + + # Step 6: Run update-index.sh script + - name: Run update-index.sh + run: _devportal/scripts/update-index.sh + + # Step 7: Force changes to be recognized by Git + - name: Touch modified files + run: | + find _devportal/content -type f -exec touch {} \; + + # Step 8: Commit and push changes if there are any + - name: Commit and push changes + run: | + git add -A # Ensure all changes are staged + git add -f _devportal/content/* + echo "Git status before commit:" + git status # Display git status for debugging + if [ -n "$(git status --porcelain)" ]; then + git commit -m "Auto-update ARC content and headers" + BRANCH_NAME="devportal" + # Check if the branch exists in the remote + if git ls-remote --exit-code origin "$BRANCH_NAME"; then + echo "Branch $BRANCH_NAME exists." + else + echo "Branch $BRANCH_NAME does not exist. Creating it." + git checkout -b "$BRANCH_NAME" + fi + git push origin "$BRANCH_NAME" + else + echo "No changes to commit." + fi + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/dev-portal-pr.yml b/.github/workflows/dev-portal-pr.yml new file mode 100644 index 000000000..5726671c6 --- /dev/null +++ b/.github/workflows/dev-portal-pr.yml @@ -0,0 +1,120 @@ +name: Auto Update Devportal Content + +on: + push: + branches: + - main # Trigger on changes to the main branch + paths: + - "ARCs/**" # Only run when files in the ARCs directory are changed + +jobs: + updateDevportal: + runs-on: ubuntu-latest + + steps: + - name: Checkout ARCs repository + uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Clone devportal repository + run: | + git clone --branch devrel-content https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/SudoWeezy/devportal.git devportal + + - name: Copy ARCs to devportal + run: | + echo "Contents of ARCs directory:" + ls ARCs/ + echo "Contents of target directory before copy:" + ls devportal/src/content/docs/standards/arcs/ + cp -r ARCs/* devportal/src/content/docs/standards/arcs/ + echo "Contents of target directory after copy:" + ls devportal/src/content/docs/standards/arcs/ + + - name: Modify headers and links in markdown files + run: | + set -e # Stop the script if any command fails + cd devportal/src/content/docs/standards/arcs || { echo "Directory not found"; exit 1; } + + # Loop through each markdown file + for file in arc-*.md; do + if [[ -f "$file" ]]; then + # 1. Remove the first header (and any preceding blank lines) + sed -i '/^# /{N;s/^# .*\n//}' "$file" + + # 2. Replace links like [ARC-1](./arc-0001.md) with [ARC-1](../arc-0001) + sed -i -E 's|\(\./(arc-[0-9]+)\.md\)|(\.\./\1)|g' "$file" + + # 3. Replace links with anchors like [ARC-1](./arc-0001.md#interface-signtxnsopts) + sed -i -E 's|\(\./(arc-[0-9]+)\.md(\#[a-zA-Z0-9-]+)?\)|(\.\./\1\2)|g' "$file" + else + echo "No markdown files found matching pattern 'arc-*.md'" + fi + done + + - name: Modify headers in markdown files + run: | + set -e # Stop the script if any command fails + cd devportal/src/content/docs/standards/arcs || { echo "Directory not found"; exit 1; } + for file in arc-*.md; do + if [[ -f "$file" ]]; then + status=$(grep '^status: ' "$file" | sed 's/status: //') + filename=$(basename -- "$file") + arc_label="${filename%.*}" + case $status in + "Final") + variant="success" + ;; + "Draft") + variant="caution" + ;; + "Last Call") + variant="note" + ;; + "Withdrawn") + variant="danger" + ;; + "Deprecated") + variant="danger" + ;; + *) + variant="tip" + ;; + esac + sed -i "/^status: /a sidebar:\n label: $arc_label\n badge:\n text: $status\n variant: $variant" "$file" + else + echo "No markdown files found matching pattern 'arc-*.md'" + fi + done + + - name: Update Markdown files in ARCs folder + run: | + cd devportal/src/content/docs/standards/arcs + find . -name "arc-*.md" -exec sed -i 's|\.\./assets/arc-|https://raw.githubusercontent.com/algorandfoundation/ARCs/main/assets/arc-|g' {} + + + - name: Commit changes to the devrel-content branch + run: | + cd devportal + git config --global user.name 'github-actions' + git config --global user.email 'github-actions@github.com' + git add -A # Ensure all changes are staged + git add -f _devportal/content/* + echo "Git status before commit:" + git status # Display git status for debugging + if [ -n "$(git status --porcelain)" ]; then + git commit -m "Auto-update ARC content and headers" + BRANCH_NAME="devportal" + # Check if the branch exists in the remote + if git ls-remote --exit-code origin "$BRANCH_NAME"; then + echo "Branch $BRANCH_NAME exists." + else + echo "Branch $BRANCH_NAME does not exist. Creating it." + git checkout -b "$BRANCH_NAME" + fi + git push origin "$BRANCH_NAME" + else + echo "No changes to commit." + fi + - name: Clean up + run: | + rm -rf ARCs devportal diff --git a/.gitignore b/.gitignore index 0eacddc03..c24da7b5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ vendor .bundle -_site/* \ No newline at end of file +_site/* +_devportal/content/*.md diff --git a/ARC-template.md b/ARC-template.md index 0823ab2d7..5d91825ec 100644 --- a/ARC-template.md +++ b/ARC-template.md @@ -7,6 +7,7 @@ discussions-to: status: Draft type: category (*only required for Standards Track): +subcategory: created: requires (*optional): --- @@ -15,7 +16,7 @@ This is the suggested template for new ARCs. Note that an ARC number will be assigned by an editor. When opening a pull request to submit your ARC, please use an abbreviated title in the filename, `arc-draft_title_abbrev.md`. -The title should be 44 characters or less. It should not repeat the ARC number in title, irrespective of the category. +The title should be 44 characters or less. It should not repeat the ARC number in title, irrespective of the category. ## Abstract Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does. diff --git a/ARCs/arc-0000.md b/ARCs/arc-0000.md index f76249d25..6bf3fab01 100644 --- a/ARCs/arc-0000.md +++ b/ARCs/arc-0000.md @@ -6,6 +6,7 @@ author: Ben Guidarelli (@barnjamin), Stéphane Barroso (@sudoweezy) discussions-to: https://github.com/algorandfoundation/ARCs/issues/9 status: Living type: Meta +sub-category: General created: 2021-10-28 --- @@ -17,14 +18,14 @@ ARC stands for Algorand Request for Comments. An ARC is a design document provid The ARC should provide a concise technical specification and a rationale for the feature. The ARC author is responsible for building consensus within the community and documenting dissenting opinions. -We intend ARCs to be the primary mechanisms for proposing new features and collecting community technical input on an issue. +We intend ARCs to be the primary mechanisms for proposing new features and collecting community technical input on an issue. We maintain ARCs as text files in a versioned repository. Their revision history is the historical record of the feature proposal. ## Specification ### ARC Types -There are three types of ARC: +There are three types of ARC: - A **Standards track ARC**: application-level standards and conventions, including contract standards such as NFT standards, Algorand ABI, URI schemes, library/package formats, and wallet formats. @@ -235,7 +236,7 @@ This document was derived heavily from An early draft of this ARC required that the size of a group of transactions must be greater than 1 but, since the Algorand protocol supports groups of size 1, this requirement had been changed so dApps don't have to have special cases for single transactions and can always send a group to the wallet. 2. (**OPTIONAL**) `txns` is a concatenation of `txns` arrays of transactions of type 1: - * All transactions with the *same* non-zero group ID must be consecutive and must match their group ID. The wallet **MUST** reject if the above is not satisfied. + * All transactions with the *same* non-zero group ID must be consecutive and must match their group ID. The wallet **MUST** reject if the above is not satisfied. * The wallet UI **MUST** be designed so that it is clear to the user when transactions are grouped (aka form an atomic transfers) and when they are not. It **SHOULD** provide very clear explanations that are understandable by beginner users, so that they cannot easily be tricked to sign what they believe is an atomic exchange while it is in actuality a one-sided payment. If `txns` does not match any of the formats above, the wallet **MUST** reject. @@ -341,12 +342,12 @@ The wallet **MAY** choose to restrict the maximum size of the array `txns`. The An early draft of this API allowed to sign single transactions in a group without providing the other transactions in the group. For security reasons, this use case is now deprecated and **SHALL** not be allowed in new implementations. Existing implementations may continue allowing for single transactions to be signed if a very clear warning is displayed to the user. The warning **MUST** stress that signing the transaction may incur losses that are much higher than the amount of tokens indicated in the transaction. That is because potential future features of Algorand may later have such consequences (e.g., a signature of a transaction may actually authorize the full group under some circumstances). -#### Transaction Validation +#### Transaction Validation ##### Inputs that Must Be Systematically Rejected * Transactions `WalletTransaction.txn` with fields that are not known by the wallet **MUST** be systematically rejected. In particular: - * Every field **MUST** be validated. + * Every field **MUST** be validated. * Any extra field **MUST** systematically make the wallet reject. * This is to prevent any security issue in case of the introduction of new dangerous fields (such as `txn.RekeyTo` or `txn.CloseRemainderTo`). * Transactions of an unknown type (field `txn.Type`) **MUST** be rejected. @@ -404,7 +405,7 @@ The last two items are expected to be defined in other documents. The requirements around group validation have been designed to prevent the following attack. -The dApp pretends to buy 1 Algo for 10 USDC, but instead creates an atomic transfer with the user sending 1 Algo to the dApp and the dApp sending 0.01 USDC to the user. However, it sends to the wallet a 1 Algo and 10 USDC transactions. +The dApp pretends to buy 1 Algo for 10 USDC, but instead creates an atomic transfer with the user sending 1 Algo to the dApp and the dApp sending 0.01 USDC to the user. However, it sends to the wallet a 1 Algo and 10 USDC transactions. If the wallet does not verify that this is a valid group, it will make the user believe that they are signing for the correct atomic transfer. diff --git a/ARCs/arc-0002.md b/ARCs/arc-0002.md index 5d4f9f705..9cbc8a6d2 100644 --- a/ARCs/arc-0002.md +++ b/ARCs/arc-0002.md @@ -7,6 +7,7 @@ discussions-to: https://github.com/algorandfoundation/ARCs/issues/2 status: Final type: Standards Track category: ARC +sub-category: Explorer created: 2021-07-06 --- diff --git a/ARCs/arc-0003.md b/ARCs/arc-0003.md index deedf46f6..303f88081 100644 --- a/ARCs/arc-0003.md +++ b/ARCs/arc-0003.md @@ -7,6 +7,7 @@ discussions-to: https://github.com/algorandfoundation/ARCs/issues/3 status: Final type: Standards Track category: ARC +sub-category: Asa created: 2021-08-07 --- @@ -36,7 +37,7 @@ The ASA parameters should follow the following conventions: * If the resulting asset name can fit the *Asset Name* field, then `` **SHOULD** be equal to the name in the JSON Metadata file. * If the resulting asset name cannot fit the *Asset Name* field, then `` **SHOULD** be a reasonable shorten version of the name in the JSON Metadata file. * (**RECOMMENDED**) or `` where `` is defined as above. In this case, the Asset URL **MUST** end with `#arc3`. -* *Asset URL* (`au`): a URI pointing to a JSON Metadata file. +* *Asset URL* (`au`): a URI pointing to a JSON Metadata file. * This URI as well as any URI in the JSON Metadata file: * **SHOULD** be persistent and allow to download the JSON Metadata file forever. * **MAY** contain the string `{id}`. If `{id}` exists in the URI, clients **MUST** replace this with the asset ID in decimal form. The rules below applies after such a replacement. @@ -44,18 +45,18 @@ The ASA parameters should follow the following conventions: * **SHOULD** use one of the following URI schemes (for compatibility and security): *https* and *ipfs*: * When the file is stored on IPFS, the `ipfs://...` URI **SHOULD** be used. IPFS Gateway URI (such as `https://ipfs.io/ipfs/...`) **SHOULD NOT** be used. * **SHOULD NOT** use the following URI scheme: *http* (due to security concerns). - * **MUST** be such that the returned resource includes the CORS header + * **MUST** be such that the returned resource includes the CORS header ``` Access-Control-Allow-Origin: * ``` if the URI scheme is *https* > This requirement is to ensure that client JavaScript can load all resources pointed by *https* URIs inside an ARC-3 ASA. * **MAY** be a relative URI when inside the JSON Metadata file. In that case, the relative URI is relative to the Asset URL. The Asset URL **SHALL NOT** be relative. Relative URI **MUST** not contain the character `:`. Clients **MUST** consider a URI as relative if and only if it does not contain the character `:`. - * If the Asset Name is neither `arc3` nor of the form `@arc3`, then the Asset URL **MUST** end with `#arc3`. + * If the Asset Name is neither `arc3` nor of the form `@arc3`, then the Asset URL **MUST** end with `#arc3`. * If the Asset URL ends with `#arc3`, clients **MUST** remove `#arc3` when linking to the URL. When displaying the URL, they **MAY** display `#arc3` in a different style (e.g., a lighter color). * If the Asset URL ends with `#arc3`, the full URL with `#arc3` **SHOULD** be valid and point to the same resource as the URL without `#arc3`. > This recommendation is to ensure backward compatiblity with wallets that do not support ARC-3. -* *Asset Metadata Hash* (`am`): +* *Asset Metadata Hash* (`am`): * If the JSON Metadata file specifies extra metadata `e` (property `extra_metadata`), then `am` is defined as: ```plain @@ -76,7 +77,7 @@ There are no requirements regarding the manager account of the ASA, or its the r An ASA is said to be a *pure non-fungible token* (*pure NFT*) if and only if it has the following properties: -* *Total Number of Units* (`t`) **MUST** be 1. +* *Total Number of Units* (`t`) **MUST** be 1. * *Number of Digits after the Decimal Point* (`dc`) **MUST** be 0. An ASA is said to be a *fractional non-fungible token* (*fractional NFT*) if and only if it has the following properties: @@ -444,7 +445,7 @@ Note that if the base metadata file URI (i.e., the Asset URL) is `ipfs://QmWS1VA ## Rationale -These conventions are heavily based on Ethereum Improvement Proposal ERC-1155 Metadata URI JSON Schema to facilitate interoperobility. +These conventions are heavily based on Ethereum Improvement Proposal ERC-1155 Metadata URI JSON Schema to facilitate interoperobility. The main differences are highlighted below: diff --git a/ARCs/arc-0004.md b/ARCs/arc-0004.md index 08fcfffe6..26d5a83a5 100644 --- a/ARCs/arc-0004.md +++ b/ARCs/arc-0004.md @@ -7,6 +7,7 @@ discussions-to: https://github.com/algorandfoundation/ARCs/issues/44 status: Final type: Standards Track category: Interface +sub-category: Application created: 2021-07-29 --- @@ -16,15 +17,15 @@ created: 2021-07-29 This document introduces conventions for encoding method calls, including argument and return value encoding, in Algorand Application -call transactions. +call transactions. The goal is to allow clients, such as wallets and -dapp frontends, to properly encode call transactions based on a description +dapp frontends, to properly encode call transactions based on a description of the interface. Further, explorers will be able to show details of these method invocations. ### Definitions -* **Application:** an Algorand Application, aka "smart contract", +* **Application:** an Algorand Application, aka "smart contract", "stateful contract", "contract", or "app". * **HLL:** a higher level language that compiles to TEAL bytecode. * **dapp (frontend)**: a decentralized application frontend, interpreted here to @@ -41,7 +42,7 @@ The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL > Comments like this are non-normative. -Interfaces are defined in TypeScript. All the objects that are defined +Interfaces are defined in TypeScript. All the objects that are defined are valid JSON objects, and all JSON `string` types are UTF-8 encoded. ### Overview @@ -52,7 +53,7 @@ access by higher-level entities. Encoding recommendations are intended to be minimal, intended only to allow interoperability among Applications. Higher level recommendations are intended to enhance user-facing interfaces, such as high-level languages, dapps, and -wallets. Applications that follow the recommendations described here are +wallets. Applications that follow the recommendations described here are called _[ARC-4](./arc-0004.md) Applications_. ### Methods @@ -83,9 +84,9 @@ method's signature, and **MUST NOT** contain any whitespace. For example, `add(uint64,uint64)uint128` is the method signature for a method named `add` which takes two uint64 parameters and returns a -uint128. Signatures are encoded in ASCII. +uint128. Signatures are encoded in ASCII. -For the benefit of universal interoperability (especially in HLLs), +For the benefit of universal interoperability (especially in HLLs), names **MUST** satisfy the regular expression `[_A-Za-z][A-Za-z0-9_]*`. Names starting with an underscore are reserved and **MUST** only be used as specified in this ARC or future ABI-related ARC. @@ -172,15 +173,15 @@ For example: An Interface is a logically grouped set of methods. All method selectors in an Interface **MUST** be unique. Method names **MAY** not be unique, as long as -the corresponding method selectors are different. Method names in Interfaces +the corresponding method selectors are different. Method names in Interfaces **MUST NOT** begin with an underscore. An Algorand Application *implements* an Interface if it supports all of the methods from that Interface. An Application **MAY** implement zero, one, or multiple Interfaces. -Interface designers **SHOULD** try to prevent collisions of method selectors -between Interfaces that are likely to be implemented together by the same +Interface designers **SHOULD** try to prevent collisions of method selectors +between Interfaces that are likely to be implemented together by the same Application. > For example, an Interface `Calculator` providing addition and subtraction @@ -368,9 +369,9 @@ interface Contract { Contract names **MUST** satisfy the regular expression `[_A-Za-z][A-Za-z0-9_]*`. -The `desc` fields of the Contract and the methods inside the Contract +The `desc` fields of the Contract and the methods inside the Contract **SHOULD** contain informations that is not explicitly encoded in the other fields, -such as support of bare Application calls, requirement of specific +such as support of bare Application calls, requirement of specific OnCompletion action for specific methods, and methods to call for creation (if creation cannot be done via a bare Application call). @@ -439,8 +440,8 @@ be encoded as defined in the [Encoding](#encoding) section. If a method has a non-void return type, then the return value of the method **MUST** be located in the final logged value of the method's execution, using the `log` opcode. The logged value **MUST** contain a specific 4 byte -prefix, followed by the encoding of the return value as defined in the -[Encoding](#encoding) section. The 4 byte prefix is defined as the first 4 +prefix, followed by the encoding of the return value as defined in the +[Encoding](#encoding) section. The 4 byte prefix is defined as the first 4 bytes of the SHA-512/256 hash of the ASCII string `return`. In hex, this is `151f7c75`. @@ -684,10 +685,10 @@ a client would create a transaction group containing, in this order: 2. a payment 3. the actual Application call -When encoding the other (non-transaction) arguments, the client -**MUST** act as if the transaction arguments were completely absent -from the method signature. The Application call would contain the method -selector in ApplicationArgs[0], the first (string) argument in +When encoding the other (non-transaction) arguments, the client +**MUST** act as if the transaction arguments were completely absent +from the method signature. The Application call would contain the method +selector in ApplicationArgs[0], the first (string) argument in ApplicationArgs[1], and the fourth (uint32) argument in ApplicationArgs[2]. @@ -697,12 +698,12 @@ they can do so safely. For example, they **SHOULD** use `gtxns` to examine the previous index in the group for a required `pay` transaction, rather than hardcode an index with `gtxn`. -In general, an ARC-4 Application method with `n` transactions as arguments **SHOULD** +In general, an ARC-4 Application method with `n` transactions as arguments **SHOULD** only inspect the `n` previous transactions. In particular, it **SHOULD NOT** -inspect transactions after and it **SHOULD NOT** check the size of a transaction -group (if this can be done safely). +inspect transactions after and it **SHOULD NOT** check the size of a transaction +group (if this can be done safely). In addition, a given method **SHOULD** always expect the same -number of transactions before itself. For example, the method +number of transactions before itself. For example, the method `deposit(string,axfer,pay,uint32)void` is always preceded by two transactions. It is never the case that it can be called only with one asset transfer but no payment transfer. @@ -721,4 +722,4 @@ None. ## Copyright -Copyright and related rights waived via CCO. \ No newline at end of file +Copyright and related rights waived via CCO. diff --git a/ARCs/arc-0005.md b/ARCs/arc-0005.md index c6be63eac..da9632d1b 100644 --- a/ARCs/arc-0005.md +++ b/ARCs/arc-0005.md @@ -7,6 +7,7 @@ discussions-to: https://github.com/algorandfoundation/ARCs/issues/52 status: Final type: Standards Track category: Interface +sub-category: Wallet created: 2021-08-09 --- @@ -31,7 +32,7 @@ The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL ### Interface `SignTxnsFunction` -Signatures are requested by calling a function `signTxns(txns)` on a list `txns` of transactions. The dApp may also provide an optional parameter `opts`. +Signatures are requested by calling a function `signTxns(txns)` on a list `txns` of transactions. The dApp may also provide an optional parameter `opts`. A wallet transaction signing function `signTxns` is defined by the following interface: ```ts @@ -86,4 +87,4 @@ None. ## Copyright -Copyright and related rights waived via CCO. \ No newline at end of file +Copyright and related rights waived via CCO. diff --git a/ARCs/arc-0016.md b/ARCs/arc-0016.md index 15c19aad2..bf0b213e9 100644 --- a/ARCs/arc-0016.md +++ b/ARCs/arc-0016.md @@ -7,6 +7,7 @@ discussions-to: https://github.com/algorandfoundation/ARCs/issues/62 status: Final type: Standards Track category: ARC +sub-category: Asa created: 2022-01-04 --- diff --git a/ARCs/arc-0018.md b/ARCs/arc-0018.md index e287420c7..48b8f3bb5 100644 --- a/ARCs/arc-0018.md +++ b/ARCs/arc-0018.md @@ -7,6 +7,7 @@ discussions-to: https://github.com/algorandfoundation/ARCs/issues/108 status: Final type: Standards Track category: Interface +sub-category: Application created: 2022-02-16 requires: 4, 20, 22 --- @@ -25,16 +26,16 @@ An example may include some music rights where the label, the artist, and any in ## Specification The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 822.. -[Royalty Policy](#royalty-policy) - The name for the settings that define how royalty payments are collected. +[Royalty Policy](#royalty-policy) - The name for the settings that define how royalty payments are collected. [Royalty Enforcer](#royalty-enforcer) - The application that enforces the royalty payments given the Royalty Policy and performs transfers of the assets. -[Royalty Enforcer Administrator](#royalty-enforcer-administrator) - The account that may call administrative level methods against the Royalty Enforcer. -[Royalty Receiver](#royalty-receiver) - The account that receives the royalty payment. It can be any valid Algorand account. +[Royalty Enforcer Administrator](#royalty-enforcer-administrator) - The account that may call administrative level methods against the Royalty Enforcer. +[Royalty Receiver](#royalty-receiver) - The account that receives the royalty payment. It can be any valid Algorand account. [Royalty Basis](#royalty-basis) - The share of a payment that is due to the Royalty Receiver -[Royalty Asset](#royalty-asset) - The ASA that should have royalties enforced during a transfer. +[Royalty Asset](#royalty-asset) - The ASA that should have royalties enforced during a transfer. [Asset Offer](#asset-offer) - A data structure stored in local state for the current owner representing the number of units of the asset being offered and the authorizing account for any transfer requests. [Third Party Marketplace](#third-party-marketplace) - A third party marketplace may be any marketplace that implements the appropriate methods to initiate transfers. -### Royalty Policy +### Royalty Policy ```ts interface RoyaltyPolicy { @@ -42,61 +43,61 @@ interface RoyaltyPolicy { royalty_recipient: string // The address that should collect the payment } ``` -A Royalty Share consists of a `royalty_receiver` that should receive a Royalty payment and a `royalty_basis` representing some share of the total payment amount. +A Royalty Share consists of a `royalty_receiver` that should receive a Royalty payment and a `royalty_basis` representing some share of the total payment amount. ### Royalty Enforcer -The Royalty Enforcer is an instance of the contract, an Application, that controls the transfer of ASAs subject to the Royalty Policy. +The Royalty Enforcer is an instance of the contract, an Application, that controls the transfer of ASAs subject to the Royalty Policy. This is accomplished by exposing an interface defined as a set of [ABI Methods](#abi-methods) allowing a grouped transaction call containing a payment and a [Transfer](#transfer) request. ### Royalty Enforcer Administrator -The Royalty Enforcer Administrator is the account that has privileges to call administrative actions against the Royalty Enforcer. If one is not set the account that created the application MUST be used. +The Royalty Enforcer Administrator is the account that has privileges to call administrative actions against the Royalty Enforcer. If one is not set the account that created the application MUST be used. To update the Royalty Enforcer Administrator the [Set Administrator](#set-administrator) method is called by the current administrator and passed the address of the new administrator. An implementation of this spec may choose how they wish to enforce a that method is called by the administrator. ### Royalty Receiver -The Royalty Receiver is a generic account that could be set to a Single Signature, a Multi Signature, a Smart Signature or even to another Smart Contract. +The Royalty Receiver is a generic account that could be set to a Single Signature, a Multi Signature, a Smart Signature or even to another Smart Contract. The Royalty Receiver is then responsible for any further royalty distribution logic, making the Royalty Enforcement Specification more general and composable. -### Royalty Basis +### Royalty Basis -The Royalty Basis is value representing the percentage of the payment made during a transfer that is due to the Royalty Receiver. +The Royalty Basis is value representing the percentage of the payment made during a transfer that is due to the Royalty Receiver. The Royalty Basis **MUST** be specified in terms of basis points https://en.wikipedia.org/wiki/Basis_point of the payment amount. -### Royalty Asset +### Royalty Asset -The Royalty Asset is an ASA subject to royalty payment collection and **MUST** be created with the [appropriate parameters](#royalty-asset-parameters). -> Because the protocol does not allow updating an address parameter after it's been deleted, +The Royalty Asset is an ASA subject to royalty payment collection and **MUST** be created with the [appropriate parameters](#royalty-asset-parameters). +> Because the protocol does not allow updating an address parameter after it's been deleted, > if the asset creator thinks they may want to modify them later, they must be set to some non-zero address. #### Asset Offer -The Asset Offer is the a data structure stored in the owner's local state. It is keyed in local storage by the byte string representing the ASA Id. +The Asset Offer is the a data structure stored in the owner's local state. It is keyed in local storage by the byte string representing the ASA Id. ```ts interface AssetOffer { auth_address: string // The address of a marketplace or account that may issue a transfer request offered_amount: number // The number of units being offered } ``` -This concept is important to this specification because we use the clawback feature to transfer the assets. Without some signal that the current owner is willing to have their assets transferred, it may be possible to transfer the asset without their permission. +This concept is important to this specification because we use the clawback feature to transfer the assets. Without some signal that the current owner is willing to have their assets transferred, it may be possible to transfer the asset without their permission. In order for a transfer to occur, this field **MUST** be set and the parameters of the transfer request **MUST** match the value set. -> A transfer matching the offer would require the transfer amount <= offered amount and that the transfer is sent by auth_address. +> A transfer matching the offer would require the transfer amount <= offered amount and that the transfer is sent by auth_address. After the transfer is completed this value **MUST** be wiped from the local state of the owner's account. #### Royalty Asset Parameters The Clawback parameter **MUST** be set to the Application Address of the Royalty Enforcer. -> Since the Royalty Enforcer relies on using the Clawback mechanism to perform the transfer the Clawback should NEVER be set to the zero address. +> Since the Royalty Enforcer relies on using the Clawback mechanism to perform the transfer the Clawback should NEVER be set to the zero address. The Freeze parameter **MUST** be set to the Application Address of the Royalty Enforcer if `FreezeAddr != ZeroAddress`, else set to `ZeroAddress`. -> If the asset creator wants to allow an ASA to be Royalty Free after some conditions are met, it should be set to the Application Address +> If the asset creator wants to allow an ASA to be Royalty Free after some conditions are met, it should be set to the Application Address The Manager parameter **MUST** be set to the Application Address of the Royalty Enforcer if `ManagerAddr != ZeroAddress`, else set to `ZeroAddress`. > If the asset creator wants to update the Freeze parameter, this should be set to the application address The Reserve parameter **MAY** be set to anything. The `DefaultFrozen` **MUST** be set to true. ### Third Party Marketplace -In order to support secondary sales on external markets this spec was designed such that the Royalty Asset may be listed without transferring it from the current owner's account. +In order to support secondary sales on external markets this spec was designed such that the Royalty Asset may be listed without transferring it from the current owner's account. A Marketplace may call the transfer request as long as the address initiating the transfer has been set as the `auth_address` through the [offer](#offer) method in some previous transaction by the current owner. ### ABI Methods @@ -118,15 +119,15 @@ The `administrator` parameter is the address of the account that should be set a #### Set Policy: *REQUIRED* - + ``` set_policy( - royalty_basis: uint64, + royalty_basis: uint64, royalty_recipient: account, ) ``` Sets the policy for any assets using this application as a Royalty Enforcer. -The `royalty_basis` is the percentage for royalty payment collection, specified in basis points (e.g., 1% is 100). +The `royalty_basis` is the percentage for royalty payment collection, specified in basis points (e.g., 1% is 100). A Royalty Basis **SHOULD** be immutable, if an application call is made that would overwrite an existing value it **SHOULD** fail. See [Security Considerations](#security-considerations) for more details on how to handle this parameters mutability. The `royalty_receiver` is the address of the account that should receive a partial share of the payment for any [transfer](#transfer) of an asset subject to royalty collection. @@ -135,39 +136,39 @@ The `royalty_receiver` is the address of the account that should receive a parti *REQUIRED* ``` set_payment_asset( - payment_asset: asset, + payment_asset: asset, allowed: boolean, ) ``` The `payment_asset` argument represents the ASA id that is acceptable for payment. The contract logic **MUST** opt into the asset specified in order to accept them as payment as part of a transfer. This method **SHOULD** have checks to ensure it is being called by the current administrator. The `allowed` argument is a boolean representing whether or not this asset is allowed. -The Royalty Receiver **MUST** be opted into the full set of assets contained in this list of payment_assets. +The Royalty Receiver **MUST** be opted into the full set of assets contained in this list of payment_assets. > In the case that an account is not opted into an asset, any transfers where payment is specified for that asset will fail until the account opts into the asset. or the policy is updated. -#### Transfer: +#### Transfer: *REQUIRED* ``` transfer_algo_payment( - royalty_asset: asset, - royalty_asset_amount: uint64, - from: account, - to: account, - royalty_receiver: account, - payment: pay, + royalty_asset: asset, + royalty_asset_amount: uint64, + from: account, + to: account, + royalty_receiver: account, + payment: pay, current_offer_amount: uint64, ) ``` And ``` transfer_asset_payment( - royalty_asset: asset, - royalty_asset_amount: uint64, - from: account, - to: account, - royalty_receiver: account, - payment: axfer, - payment_asset: asset, + royalty_asset: asset, + royalty_asset_amount: uint64, + from: account, + to: account, + royalty_receiver: account, + payment: axfer, + payment_asset: asset, current_offer_amount: uint64, ) ``` @@ -175,17 +176,17 @@ Transfers the Asset after checking that the royalty policy is adhered to. This c There **MUST** be a royalty policy defined prior to attempting a transfer. There are two different method signatures specified, one for simple Algo payments and one for Asset as payment. The appropriate method should be called depending on the circumstance. -The `royalty_asset` is the ASA ID to be transferred. +The `royalty_asset` is the ASA ID to be transferred. The `from` parameter is the account the ASA is transferred from. The `to` parameter is the account the ASA is transferred to. -The `royalty_receiver` parameter is the account that collects the royalty payment. +The `royalty_receiver` parameter is the account that collects the royalty payment. The `royalty_asset_amount` parameter is the number of units of this ASA ID to transfer. The amount **MUST** be less than or equal to the amount [offered](#offer) by the `from` account. -The `payment` parameter is a reference to the transaction that is transferring some asset (ASA or Algos) from the buyer to the Application Address of the Royalty Enforcer. -The `payment_asset` parameter is specified in the case that the payment is being made with some ASA rather than with Algos. It **MUST** match the Asset ID of the AssetTransfer payment transaction. -The `current_offer_amount` parameter is the current amount of the Royalty Asset [offered](#offer) by the `from` account. +The `payment` parameter is a reference to the transaction that is transferring some asset (ASA or Algos) from the buyer to the Application Address of the Royalty Enforcer. +The `payment_asset` parameter is specified in the case that the payment is being made with some ASA rather than with Algos. It **MUST** match the Asset ID of the AssetTransfer payment transaction. +The `current_offer_amount` parameter is the current amount of the Royalty Asset [offered](#offer) by the `from` account. The transfer call **SHOULD** be part of a group with a size of 2 (payment/asset transfer + app call) > See [Security Considerations](#security-considerations) for details on how this check may be circumvented. -Prior to each transfer the Royalty Enforcer **SHOULD** assert that the Seller (the `from` parameter) and the Buyer (the `to` parameter) have blank or unset `AuthAddr`. +Prior to each transfer the Royalty Enforcer **SHOULD** assert that the Seller (the `from` parameter) and the Buyer (the `to` parameter) have blank or unset `AuthAddr`. > This reasoning for this check is described in [Security Considerations](#security-considerations). It is purposely left to the implementor to decide if it should be checked. #### Offer: @@ -193,27 +194,27 @@ Prior to each transfer the Royalty Enforcer **SHOULD** assert that the Seller (t *REQUIRED* ``` offer( - royalty_asset: asset, - royalty_asset_amount: uint64, - auth_address: account, - offered_amount: uint64, + royalty_asset: asset, + royalty_asset_amount: uint64, + auth_address: account, + offered_amount: uint64, offered_auth_addr: account, ) ``` Flags the asset as transferrable and sets the address that may initiate the transfer request. -The `royalty_asset` is the ASA ID that is being offered. -The `royalty_asset_amount` is the number of units of the ASA ID that are offered. The account making this call **MUST** have at least this amount. -The `auth_address` is the address that may initiate a [transfer](#transfer). +The `royalty_asset` is the ASA ID that is being offered. +The `royalty_asset_amount` is the number of units of the ASA ID that are offered. The account making this call **MUST** have at least this amount. +The `auth_address` is the address that may initiate a [transfer](#transfer). > This address may be any valid address in the Algorand network including an Application Account's address. The `offered_amount` is the number of units of the ASA ID that are currently offered. > In the case that this is an update, it should be the amount being replaced. In the case that this is a new offer it should be 0. The `offered_auth_address` is the address that may currently initiate a [transfer](#transfer). > In the case that this is an update, it should be the address being replaced. In the case that this is a new offer it should be the zero address. If any transfer is initiated by an address that is _not_ listed as the `auth_address` for this asset ID from this account, the transfer **MUST** be rejected. -If this method is called when there is an existing entry for the same `royalty_asset`, the call is treated as an update. In the case of an update case the contract **MUST** compare the `offered_amount` and `offered_auth_addr` with what is currently set. If the values differ, the call **MUST** be rejected. +If this method is called when there is an existing entry for the same `royalty_asset`, the call is treated as an update. In the case of an update case the contract **MUST** compare the `offered_amount` and `offered_auth_addr` with what is currently set. If the values differ, the call **MUST** be rejected. > This requirement is meant to prevent a sort of race condition where the `auth_address` has a `transfer` accepted before the `offer`-ing account sees the update. In that case the offering account might try to offer more than they would otherwise want to. An example is offered in [security considerations](#security-considerations) To rescind an offer, this method is called with 0 as the new offered amount. -If a [transfer](#transfer) or [royalty_free_move](#royalty-free-move) is called successfully, the `offer` **SHOULD** be updated or deleted from local state. +If a [transfer](#transfer) or [royalty_free_move](#royalty-free-move) is called successfully, the `offer` **SHOULD** be updated or deleted from local state. > Exactly how to update the offer is left to the implementer. In the case of a partially filled offer, the amount may be updated to reflect some new amount that represents `offered_amount - amount transferred` or the offer may be deleted completely. #### Royalty Free Move: @@ -221,21 +222,21 @@ If a [transfer](#transfer) or [royalty_free_move](#royalty-free-move) is called *OPTIONAL* ``` royalty_free_move( - royalty_asset: asset, - royalty_asset_amount: uint64, + royalty_asset: asset, + royalty_asset_amount: uint64, from: account, - to: account, + to: account, offered_amount: uint64, ) ``` -Moves an asset to the new address without collecting any royalty payment. +Moves an asset to the new address without collecting any royalty payment. Prior to this method being called the current owner **MUST** offer their asset to be moved. The `auth_address` of the offer **SHOULD** be set to the address of the Royalty Enforcer Administrator and calling this method **SHOULD** have checks to ensure it is being called by the current administrator. > This May be useful in the case of a marketplace where the NFT must be placed in some escrow account. Any logic may be used to validate this is an authorized transfer. The `royalty_asset` is the asset being transferred without applying the Royalty Enforcement logic. The `royalty_asset_amount` is the number of units of this ASA ID that should be moved. The `from` parameter is the current owner of the asset. The `to` parameter is the intended receiver of the asset. -The `offered_amount` is the number of units of this asset currently offered. This value **MUST** be greater than or equal to the amount being transferred. +The `offered_amount` is the number of units of this asset currently offered. This value **MUST** be greater than or equal to the amount being transferred. > The `offered_amount` value for is passed to prevent the race or attack described in [Security Considerations](#security-considerations). ### Read Only Methods Three methods are specified here as `read-only` as defined in [ARC-22](./arc-0022.md). @@ -254,14 +255,14 @@ The return value is a tuple of type `(address,uint64)`, where the `address` is t *REQUIRED* ``` get_offer( - royalty_asset: asset, + royalty_asset: asset, from: account, )(address,uint64) ``` Gets the current [Asset Offer](#asset-offer) for a given asset as set by its owner. The `royalty_asset` parameter is the asset id of the [Royalty Asset](#royalty-asset) that has been offered The `from` parameter is the account that placed the offer -The return value is a tuple of type `(address,uint64)`, where `address` is the authorizing address that may make a transfer request and the `uint64` it the amount offered. +The return value is a tuple of type `(address,uint64)`, where `address` is the authorizing address that may make a transfer request and the `uint64` it the amount offered. #### Get Administrator: @@ -270,7 +271,7 @@ The return value is a tuple of type `(address,uint64)`, where `address` is the a get_administrator()address ``` Gets the [Royalty Enforcer Administrator](#royalty-enforcer-administrator) set for this Royalty Enforcer. -The return value is of type `address` and represents the address of the account that may call administrative methods for this Royalty Enforcer application +The return value is of type `address` and represents the address of the account that may call administrative methods for this Royalty Enforcer application ### Storage @@ -278,7 +279,7 @@ While the details of storage are described here, `readonly` methods are specifie #### Global Storage -The parameters that describe a policy are stored in Global State. +The parameters that describe a policy are stored in Global State. The relevant keys are: `royalty_basis` - The percentage specified in basis points of the payment `royalty_receiver` - The account that should be paid the royalty @@ -287,7 +288,7 @@ Another key is used to store the current administrator account: #### Local Storage -For an offered Asset, the authorizing address and amount offered should be stored in a Local State field for the account offering the Asset. +For an offered Asset, the authorizing address and amount offered should be stored in a Local State field for the account offering the Asset. ### Full ABI Spec @@ -527,8 +528,8 @@ Let Carol be a buyer of a Royalty Asset ``` ```mermaid sequenceDiagram - Alice->>Royalty Enforcer: set_policy with Royalty Basis and Royalty Receiver - Alice->>Royalty Enforcer: set_payment_asset with any asset that should be accepted as payment + Alice->>Royalty Enforcer: set_policy with Royalty Basis and Royalty Receiver + Alice->>Royalty Enforcer: set_payment_asset with any asset that should be accepted as payment par List Bob->>Royalty Enforcer: offer Bob->>Marketplace: list @@ -540,7 +541,7 @@ sequenceDiagram Royalty Enforcer->>Alice: royalty payment end par Delist - Bob->>Royalty Enforcer: offer 0 + Bob->>Royalty Enforcer: offer 0 Bob->>Marketplace: delist end ``` @@ -548,8 +549,8 @@ sequenceDiagram ### Metadata The metadata associated to an asset **SHOULD** conform to any ARC that supports an additional field in the `properties` section specifying the specific information relevant for off-chain applications like wallets or Marketplace dApps. The metadata **MUST** be immutable. -The fields that should be specified are the `application-id` as described in [ARC-20](./arc-0020.md) and `rekey-checked` which describes whether or not this application implements the rekey checks during transfers. -Example: +The fields that should be specified are the `application-id` as described in [ARC-20](./arc-0020.md) and `rekey-checked` which describes whether or not this application implements the rekey checks during transfers. +Example: ```js //... "properties":{ @@ -580,14 +581,14 @@ https://github.com/algorand-devrel/royalty ## Security Considerations -There are a number of security considerations that implementers and users should be aware of. +There are a number of security considerations that implementers and users should be aware of. *Royalty policy mutability* -The immutability of a royalty basis is important to consider since mutability introduces the possibility for a situation where, after an initial sale, the royalty policy is updated from 1% to 100% for example. This would make any further sales have the full payment amount sent to the royalty recipient and the seller would receive nothing. This specification is written with the recommendation that the royalty policy **SHOULD** be immutable. This is not a **MUST** so that an implementation may decrease the royalty basis may decrease over time. -Caution should be taken by users and implementers when evaluating how to implement the exact logic. +The immutability of a royalty basis is important to consider since mutability introduces the possibility for a situation where, after an initial sale, the royalty policy is updated from 1% to 100% for example. This would make any further sales have the full payment amount sent to the royalty recipient and the seller would receive nothing. This specification is written with the recommendation that the royalty policy **SHOULD** be immutable. This is not a **MUST** so that an implementation may decrease the royalty basis may decrease over time. +Caution should be taken by users and implementers when evaluating how to implement the exact logic. *Spoofed payment* -While its possible to enforce the group size limit, it is possible to circumvent the royalty enforcement logic by simply making an Inner Transaction application call with the appropriate parameters and a small payment, then in the same outer group the "real" payment. The counter-party risk remains the same since the inner transaction is atomic with the outers. -In addition, it is always possible to circumvent the royalty enforcement logic by using an escrow account in the middle: - - Alice wants to sell asset A to Bob for 1M USDC. +While its possible to enforce the group size limit, it is possible to circumvent the royalty enforcement logic by simply making an Inner Transaction application call with the appropriate parameters and a small payment, then in the same outer group the "real" payment. The counter-party risk remains the same since the inner transaction is atomic with the outers. +In addition, it is always possible to circumvent the royalty enforcement logic by using an escrow account in the middle: + - Alice wants to sell asset A to Bob for 1M USDC. - Alice and Bob creates an escrow ESCROW (smart signature). - Alice sends A for 1 μAlgo to the ESCROW - Bob sends 1M USDC to ESCROW. @@ -597,7 +598,7 @@ The exact logic that should determine _if_ a transfer should be allowed is left *Rekey to swap* Rekeying an account can also be seen as circumventing this logic since there is no counter-party risk given that a rekey can be grouped with a payment. We address this by suggesting the `auth_addr` on the buyer and seller accounts are both set to the zero address. *Offer for unintended clawback* -Because we use the clawback mechanism to move the asset, we need to be sure that the current owner is actually interested in making the sale. We address this by requiring the [offer](#offer) method is called to set an authorized address OR that the AssetSender is the one making the application call. +Because we use the clawback mechanism to move the asset, we need to be sure that the current owner is actually interested in making the sale. We address this by requiring the [offer](#offer) method is called to set an authorized address OR that the AssetSender is the one making the application call. *Offer double spend* If the [offer](#offer) method did not require the current value be passed, a possible attack or race condition may be taken advantage of. - There's an open offer for N. @@ -607,7 +608,7 @@ If the [offer](#offer) method did not require the current value be passed, a pos If the ASA has it's manager parameter set, it is possible to change the other address parameters. Namely the clawback and freeze roles could be changed to allow an address that is _not_ the Royalty Enforcer's application address. For that reason the manager **MUST** be set to the zero address or to the Royalty Enforcer's address. *Compatability of existing ASAs* In the case of [ARC-69](./arc-0069.md) and [ARC-19](./arc-0019.md) ASA's the manager is the account that may issue `acfg` transactions to update metadata or to change the reserve address. For the purposes of this spec the manager **MUST** be the application address, so the logic to issue appropriate `acfg` transactions should be included in the application logic if there is a need to update them. -> When evaluating whether or not an existing ASA may be compatible with this spec, note that the `clawback` address needs to be set to the application address of the Royalty Enforcer. The `freeze` address and `manager` address may be empty or, if set, must be the application address. If these addresses aren't set correctly, the royalty enforcer will not be able to issue the transactions required and there may be security considerations. +> When evaluating whether or not an existing ASA may be compatible with this spec, note that the `clawback` address needs to be set to the application address of the Royalty Enforcer. The `freeze` address and `manager` address may be empty or, if set, must be the application address. If these addresses aren't set correctly, the royalty enforcer will not be able to issue the transactions required and there may be security considerations. > The `reserve` address has no requirements in this spec so [ARC-19](./arc-0019.md) ASAs should have no issue assuming the rest of the addresses are set correctly. ## Copyright diff --git a/ARCs/arc-0019.md b/ARCs/arc-0019.md index bce36a324..baec49ce7 100644 --- a/ARCs/arc-0019.md +++ b/ARCs/arc-0019.md @@ -7,13 +7,14 @@ discussions-to: https://github.com/algorandfoundation/ARCs/issues/73 status: Final type: Standards Track category: ARC +sub-category: Asa created: 2021-01-23 --- ## Abstract This ARC describes a template substitution for URLs in ASAs, initially for ipfs:// scheme URLs allowing mutable CID replacement in rendered URLs. -The proposed template-XXX scheme has substitions like: +The proposed template-XXX scheme has substitions like: ``` template-ipfs://{ipfscid::::}[/...] ``` @@ -30,15 +31,15 @@ Of the parameters that are mutable, the Reserve address is somewhat distinct in These 32-bytes can, for example, hold a SHA2-256 hash uniquely referencing the desired content for the ASA (ARC-3-like metadata for example) -Using the reserve address in this way means that what an ASA 'points to' for metadata can be changed with a single asset config transaction, changing only the 32-bytes of the reserve address. The new value is accessible via even non-archival nodes with a single call to the `/v2/assets/xxx` REST endpoint. +Using the reserve address in this way means that what an ASA 'points to' for metadata can be changed with a single asset config transaction, changing only the 32-bytes of the reserve address. The new value is accessible via even non-archival nodes with a single call to the `/v2/assets/xxx` REST endpoint. ## Specification The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in RFC-2119. -This proposal specifies a method to provide mutability for IPFS hosted content-ids. The intention is that FUTURE ARCs could define additional template substitutions, but this is not meant to be a kitchen sink of templates, only to establish a possible baseline of syntax. +This proposal specifies a method to provide mutability for IPFS hosted content-ids. The intention is that FUTURE ARCs could define additional template substitutions, but this is not meant to be a kitchen sink of templates, only to establish a possible baseline of syntax. -An indication that this ARC is in use is defined by an ASA URL's "scheme" having the prefix "**template-**". +An indication that this ARC is in use is defined by an ASA URL's "scheme" having the prefix "**template-**". An Asset conforming this specification **MUST** have: @@ -49,19 +50,19 @@ The URL of the asset must be of the form: template-ipfs://(...) ``` -> The ipfs:// scheme is already somewhat of a meta scheme in that clients interpret the ipfs scheme as referencing an IPFS CID (version 0/base58 or 1/base32 currently) followed by optional path within certain types of IPFS DAG content (IPLD CAR content for example). The clients take the CID and use to fetch directly from the IPFS network directly via IPFS nodes, or via various IPFS gateways (https://ipfs.io/ipfs/CID[/...], pinata, etc.)). +> The ipfs:// scheme is already somewhat of a meta scheme in that clients interpret the ipfs scheme as referencing an IPFS CID (version 0/base58 or 1/base32 currently) followed by optional path within certain types of IPFS DAG content (IPLD CAR content for example). The clients take the CID and use to fetch directly from the IPFS network directly via IPFS nodes, or via various IPFS gateways (https://ipfs.io/ipfs/CID[/...], pinata, etc.)). 2. **An "ipfscid" _template_ argument in place of the normal CID.** Where the format of templates are `{