[
  {
    "path": ".circleci/config.yml",
    "content": "version: 2.1\n\nexecutors:\n    linux-node:\n        machine:\n            image: ubuntu-2004:2022.10.1\n    macos-node:\n        macos:\n            xcode: 14.2.0\n        resource_class: macos.m1.large.gen1\n        environment:\n            TERM: xterm-256color\n\n# Aliases - encapsulation of lengthy logic\n#\n# `restore_*` aliases refer to downloading the saved cache of their respective key, if it exists\n#  i.e - `restore_macos_brew_cache` will try to download the cache that holds the data installed after running `brew install gmp`\n#\n# `save_*` aliases refer to saving the installation data to cache\n#  i.e - `save_macos_brew_cache` will save the result of installing gmp with the command `brew install gmp`\n#\n#   Available caches:\n#\n#   `brew-gmp-cache` is used to save/restore cache of the gmp package installation on macos\n#\n#   `venv_cache` is used to save/restore cache of the venv tests, which use starknet commands installed in the virtual environment `my-venv`\n#\n#   `cairo_cache` is used to save/restore cache of the cairo-lang package, which uses starknet commands installed in the local bin folder\n#\n#   `devnet_cache` is used to save/restore cache of starknet-devnet, including all its dependencies\n#\n#\n#   key format: {cache name}-{key version}-{executor architecture}-{checksum of the dependency version}\n#   Where:\n#    {cache name} is a descriptive name for the cache we're saving, as described above (`brew-gmp-cache`, `venv-cache`, etc);\n#    {key version} is the version of the cache configuration, i.e, if a change needs to be done to the paths for example, this version should be upped so a new key is generated for it;\n#    {executor architecture} is the identifier for the architecture of each executor, which is generated by the {{ arch }} template;\n#    {checksum of the dependency version} is the checksum generated with the template {{ checksum \"PATH/TO/FILE\" }}, where the file contains the latest version of the dependency ;\n#   Exception is \"brew-gmp-cache\", which we do not need to verify the checksum\n#\naliases:\n    - &restore_macos_brew_cache\n      # Try to restore only if the executor is a macos one #\n      - when:\n            condition:\n                and:\n                    - equal: [macos-node, << parameters.platform >>]\n            steps:\n                - restore_cache:\n                      name: \"Restore venv Cache\"\n                      key: brew-gmp-cache-v1-{{ arch }}\n    - &save_macos_brew_cache\n      # Save only if the executor is a macos one #\n      - when:\n            condition:\n                and:\n                    - equal: [macos-node, << parameters.platform >>]\n            steps:\n                - save_cache:\n                      name: \"Save brew-gmp Cache\"\n                      key: brew-gmp-cache-v1-{{ arch }}\n                      paths:\n                          - /usr/local/Cellar/gmp\n                          - /usr/local/include\n                          - /usr/local/lib/libgmp.10.dylib\n                          - /usr/local/lib/libgmp.a\n                          - /usr/local/lib/libgmp.dylib\n                          - /usr/local/lib/libgmpxx.4.dylib\n                          - /usr/local/lib/libgmpxx.a\n                          - /usr/local/lib/libgmpxx.dylib\n\n    - &restore_venv_cache\n      # Try to restore only if the test name is \"test-venv-tests\" #\n      - when:\n            condition:\n                and:\n                    - equal: [test-venv-tests, << parameters.test-name >>]\n            steps:\n                - restore_cache:\n                      name: \"Restore venv Cache\"\n                      key: venv-cache-{{ arch }}-v1-{{ checksum \"/tmp/cairo-lang-version\" }}\n    - &save_venv_cache\n      # Save only if the test name is \"test-venv-tests\" #\n      - when:\n            condition:\n                and:\n                    - equal: [test-venv-tests, << parameters.test-name >>]\n            steps:\n                - save_cache:\n                      name: \"Save venv Cache\"\n                      key: venv-cache-{{ arch }}-v1-{{ checksum \"/tmp/cairo-lang-version\" }}\n                      paths:\n                          - /Users/distiller/project/my-venv\n                          - /home/circleci/project/my-venv\n\n    - &restore_cairo_cache\n      # Try to restore only if the test name is not \"test-venv-tests\" #\n      - when:\n            condition:\n                and:\n                    - not:\n                          equal: [test-venv-tests, << parameters.test-name >>]\n            steps:\n                - restore_cache:\n                      name: \"Restore cairo-lang Cache\"\n                      key: cairo-lang-cache-{{ arch }}-v1-{{ checksum \"/tmp/cairo-lang-version\" }}\n    - &save_cairo_cache\n      # Try to save only if the test name is not \"test-venv-tests\" #\n      - when:\n            condition:\n                and:\n                    - not:\n                          equal: [test-venv-tests, << parameters.test-name >>]\n            steps:\n                - save_cache:\n                      name: \"Save cairo-lang Cache\"\n                      key: cairo-lang-cache-{{ arch }}-v1-{{ checksum \"/tmp/cairo-lang-version\" }}\n                      paths:\n                          - /usr/python3.9/dist-packages/cairo-lang\n                          - /usr/local/bin/starknet\n                          - /usr/local/bin/starknet-compile\n\n    - &restore_devnet_cache\n      - restore_cache:\n            name: \"Restore devnet Cache\"\n            key: devnet-cache-{{ arch }}-v1-{{ checksum \"/tmp/devnet-version\" }}\n    - &save_devnet_cache\n      - save_cache:\n            name: \"Save devnet Cache\"\n            key: devnet-cache-{{ arch }}-v1-{{ checksum \"/tmp/devnet-version\" }}\n            paths:\n                - /opt/circleci/.pyenv/versions\n                - /opt/circleci/.pyenv/shims/starknet-devnet\n                - /usr/local/bin/starknet-devnet\n                - /usr/local/lib/python3.9/site-packages\n\n# Commands\n#   fetch_dependecies_version - retrieves the latest version of the dependencies (starknet-devnet and cairo-lang).\n#                               These are saved to different files, from which we verify the checksum to check for any needed updates, and create caches with new keys\n#\n#   restore_dependency_cache - download dependencies from cache. It calls the `restore_*` aliases defined above for each dependecy.\n#\n#   save_dependency_cache - save the dependencies in cache. It calls the `save_*` aliases defined above for each dependecy.\ncommands:\n    fetch_dependecies_version:\n        description: \"Fetch the dependencies version\"\n        steps:\n            - run:\n                  name: \"Load config enviroment variables at runtime\"\n                  command: |\n                      for key in $(jq -r 'keys[]' config.json); do\n                          echo $key=$(jq -r .[\\\"\"$key\"\\\"] config.json) >> $BASH_ENV\n                      done\n                      cat $BASH_ENV\n            - run:\n                  name: \"Fetch Devnet version\"\n                  command: echo \"$STARKNET_DEVNET\" > /tmp/devnet-version\n            - run:\n                  name: \"Set cairo-lang version\"\n                  command: echo \"$CAIRO_LANG\"> /tmp/cairo-lang-version\n    restore_dependency_cache:\n        parameters:\n            platform:\n                type: string\n            test-name:\n                type: string\n        description: \"Restore the dependencies from cache\"\n        steps:\n            - <<: *restore_macos_brew_cache\n            - <<: *restore_cairo_cache\n            - <<: *restore_venv_cache\n            - <<: *restore_devnet_cache\n    save_dependency_cache:\n        parameters:\n            platform:\n                type: string\n            test-name:\n                type: string\n        description: \"Save the dependencies to cache\"\n        steps:\n            - <<: *save_macos_brew_cache\n            - <<: *save_cairo_cache\n            - <<: *save_venv_cache\n            - <<: *save_devnet_cache\n\njobs:\n    test:\n        parameters:\n            platform:\n                type: string\n            test-name:\n                type: string\n        executor: << parameters.platform >>\n        steps:\n            - checkout\n\n            # If on a Linux executor, add permissions for user to be able to write to \"/usr/local/bin\", so that we're able to download cache that will be in that folder\n            - when:\n                  condition:\n                      and:\n                          - equal: [linux-node, << parameters.platform >>]\n                  steps:\n                      - run:\n                            name: Add file permissions\n                            command: sudo chown -R circleci /usr/local/bin\n\n            # Retrieve the latest versions of the dependencies\n            - fetch_dependecies_version\n\n            # Call Command: restore_dependency_cache - restore the dependencies that were saved in cache. The parameters are passed because some caches depend on the executor and test #\n            - restore_dependency_cache:\n                  platform: << parameters.platform >>\n                  test-name: << parameters.test-name >>\n\n            - run:\n                  name: Install\n                  command: npm install\n            - run:\n                  name: Lint\n                  command: npm run lint\n            - run:\n                  name: Build\n                  command: npm run build\n            - run:\n                  name: << parameters.test-name >>\n                  command: npm run << parameters.test-name >>\n                  no_output_timeout: 15m\n\n            # Call Command: save_dependency_cache - save dependencies that were installed during the job run. The parameters are passed because some caches depend on the executor and test #\n            - save_dependency_cache:\n                  platform: << parameters.platform >>\n                  test-name: << parameters.test-name >>\n    npm_publish:\n        executor: linux-node\n        steps:\n            - checkout\n            - run:\n                  name: Publish\n                  command: ./scripts/npm-publish.sh\n\nworkflows:\n    test_and_publish:\n        jobs:\n            - test:\n                  matrix:\n                      parameters:\n                          platform: [linux-node, macos-node]\n                          test-name:\n                              [\n                                  test-general-tests,\n                                  test-configuration-tests,\n                                  test-venv-tests,\n                                  test-integrated-devnet-tests,\n                                  test-recompilation-tests\n                              ]\n                      exclude:\n                          - platform: macos-node\n                            test-name: test-general-tests\n                          - platform: macos-node\n                            test-name: test-configuration-tests\n                          - platform: macos-node\n                            test-name: test-integrated-devnet-tests\n                          - platform: macos-node\n                            test-name: test-recompilation-tests\n                  context: spaceshard\n            - npm_publish:\n                  context: spaceshard\n                  filters:\n                      branches:\n                          only:\n                              - master\n                  requires:\n                      - test\n"
  },
  {
    "path": ".eslintrc.json",
    "content": "{\n    \"env\": {\n        \"es2021\": true,\n        \"node\": true\n    },\n    \"extends\": [\"eslint:recommended\", \"plugin:@typescript-eslint/recommended\"],\n    \"parser\": \"@typescript-eslint/parser\",\n    \"parserOptions\": {\n        \"ecmaVersion\": \"latest\",\n        \"sourceType\": \"module\"\n    },\n    \"plugins\": [\"@typescript-eslint\"],\n    \"rules\": {\n        \"array-bracket-spacing\": [\"error\", \"never\"],\n        \"block-spacing\": [\"error\", \"always\"],\n        \"brace-style\": [\"error\", \"1tbs\"],\n        \"comma-dangle\": [\"error\", \"never\"],\n        \"comma-spacing\": [\n            \"error\",\n            {\n                \"before\": false,\n                \"after\": true\n            }\n        ],\n        \"eol-last\": [\"error\", \"always\"],\n        \"keyword-spacing\": [\n            \"error\",\n            {\n                \"overrides\": {\n                    \"this\": {\n                        \"before\": false,\n                        \"after\": false\n                    }\n                },\n                \"before\": true,\n                \"after\": true\n            }\n        ],\n        \"key-spacing\": [\n            \"error\",\n            {\n                \"beforeColon\": false,\n                \"afterColon\": true\n            }\n        ],\n        \"linebreak-style\": [\"error\", \"unix\"],\n        \"no-trailing-spaces\": [\"error\"],\n        \"no-var\": [\"error\"],\n        \"no-warning-comments\": [\"error\"],\n        \"object-curly-spacing\": [\"error\", \"always\"],\n        \"quotes\": [\"error\", \"double\"],\n        \"semi\": [\"error\", \"always\"],\n        \"semi-spacing\": [\n            \"error\",\n            {\n                \"before\": false,\n                \"after\": true\n            }\n        ],\n        \"space-before-blocks\": [\"error\", \"always\"],\n        \"space-in-parens\": [\"error\", \"never\"],\n        \"switch-colon-spacing\": [\n            \"error\",\n            {\n                \"before\": false,\n                \"after\": true\n            }\n        ],\n        \"template-curly-spacing\": [\"error\", \"never\"],\n        \"@typescript-eslint/no-unused-vars\": [\"error\", { \"argsIgnorePattern\": \"^_\" }],\n        \"@typescript-eslint/no-empty-interface\": [\n            \"error\",\n            {\n                \"allowSingleExtends\": true\n            }\n        ]\n    }\n}\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"\"\nlabels: \"\"\nassignees: \"\"\n---\n\n**Describe the bug (observed vs expected behavior)**\n\nA clear and concise description of what the bug is. If applicable, add screenshots, but prefer providing copyable text.\n\n**Hardhat config file**\n\nPaste your hardhat.config.ts or hardhat.config.js.\n\n<!-- You can put it in a code block starting with ```typescript\n-->\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n<!-- Show exact commands which you executed, e.g.\n`npx hardhat test my-test.ts --starknet-network devnet` -->\n\n1. ...\n2. ...\n\n**Plugin version**\n\nPlease provide the results of these commands on your system:\n\n| Command                               | Version    |\n| ------------------------------------- | ---------- |\n| `npx hardhat starknet-plugin-version` | your value |\n| `npx hardhat --version`               | your value |\n| `npm --version`                       | your value |\n| `node --version`                      | your value |\n\n**System specifications**\n\n-   OS:\n<!-- Please note if you're using the M1 chip -->\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "## Usage related changes\n\n<!-- How the changes from this PR affect users. -->\n\n-   Change x.\n-   ...\n\n## Development related changes\n\n<!-- How these changes affect the developers of this project - e.g. changes in testing or CI/CD. -->\n\n-   Change y.\n-   ...\n\n## Checklist:\n\n-   [ ] Formatted the code\n-   [ ] No linter errors + tried to avoid introducing linter warnings\n-   [ ] Performed a self-review of the code\n-   [ ] Rebased to the last commit of the target branch (or merged it into my branch)\n-   [ ] Documented the changes\n-   [ ] Updated the `test` directory (with a test case consisting of `network.json`, `hardhat.config.ts`, `check.ts`)\n-   [ ] Linked issues which this PR resolves\n-   [ ] Created a PR to the `plugin` branch of [`starknet-hardhat-example`](https://github.com/0xSpaceShard/starknet-hardhat-example):\n    -   < EXAMPLE_REPO_PR_URL > <!-- paste here if applicable -->\n    -   [ ] Modified `test.sh` to use my example repo branch\n    -   [ ] Restored `test.sh` to to use the original branch (after the example repo PR has been merged)\n-   [ ] All tests are passing (for external contributors who don't have access to the CI/CD pipeline)\n"
  },
  {
    "path": ".gitignore",
    "content": "dist\nnode_modules\nstarknet-hardhat-example\nstarknet-hardhat-example-link\ncache\n.vscode\nmy-venv\ncairo/\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n    \"printWidth\": 100,\n    \"tabWidth\": 4,\n    \"trailingComma\": \"none\"\n}\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2023 SpaceShard\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<!-- logo / title -->\n<p align=\"center\" style=\"margin-bottom: 0px !important\">\n  <img width=\"100\" src=\"https://user-images.githubusercontent.com/2848732/181497954-297848fb-4e9d-4bf0-91bd-c1c5da8ae10d.svg\" alt=\"Hardhat Plugin\" align=\"center\">\n</p>\n<h1 align=\"center\" style=\"margin-top: 0px !important\">Starknet Hardhat Plugin</h1>\n\n[![npm package](https://img.shields.io/npm/v/@shardlabs/starknet-hardhat-plugin?color=blue)](https://www.npmjs.com/package/@shardlabs/starknet-hardhat-plugin)\n\nIf you've used Hardhat 👷‍♀️👷‍♂️ and want to develop for Starknet <img src=\"https://starkware.co/wp-content/uploads/2021/07/Group-177.svg\" alt=\"starknet\" width=\"18\"/>, this plugin might come in hand. If you've never set up a Hardhat project, check out [this guide](https://hardhat.org/tutorial/creating-a-new-hardhat-project.html).\n\n## Starknet Devnet JS\n\nYou might be more interested in a better-maintained repository that provides Starknet Devnet interaction. Check out [starknet-devnet.js](https://github.com/0xspaceShard/starknet-devnet-js).\n\n## 🌐 Docs\n\nOn the following links you can find the documentation of:\n\n-   [the latest official release](https://0xspaceshard.github.io/starknet-hardhat-plugin/)\n-   [the latest master commit (not officially released)](https://github.com/0xSpaceShard/starknet-hardhat-plugin/tree/master/www/docs/intro.md)\n\n## ✏️ Contributing\n\nWe ❤️ and encourage all contributions!\n\n[Click here](https://0xspaceshard.github.io/starknet-hardhat-plugin/docs/dev) for the development guide.\n\nSpecial thanks 🙌 to all the [contributors](https://github.com/0xSpaceShard/starknet-hardhat-plugin/graphs/contributors)!\n"
  },
  {
    "path": "config.json",
    "content": "{\n    \"CAIRO_LANG\": \"0.11.2\",\n    \"STARKNET_DEVNET\": \"0.6.3\",\n    \"CAIRO_COMPILER\": \"2.2.0\",\n    \"SCARB_VERSION\": \"0.7.0\"\n}\n"
  },
  {
    "path": "contract-artifacts/ArgentAccount/780760e4156afe592bb1feff7e769cf279ae9831/ArgentAccount.cairo/ArgentAccount.json",
    "content": "{\"abi\":[{\"members\":[{\"name\":\"to\",\"offset\":0,\"type\":\"felt\"},{\"name\":\"selector\",\"offset\":1,\"type\":\"felt\"},{\"name\":\"data_offset\",\"offset\":2,\"type\":\"felt\"},{\"name\":\"data_len\",\"offset\":3,\"type\":\"felt\"}],\"name\":\"CallArray\",\"size\":4,\"type\":\"struct\"},{\"data\":[{\"name\":\"new_signer\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"signer_changed\",\"type\":\"event\"},{\"data\":[{\"name\":\"new_guardian\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"guardian_changed\",\"type\":\"event\"},{\"data\":[{\"name\":\"new_guardian\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"guardian_backup_changed\",\"type\":\"event\"},{\"data\":[{\"name\":\"active_at\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"escape_guardian_triggered\",\"type\":\"event\"},{\"data\":[{\"name\":\"active_at\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"escape_signer_triggered\",\"type\":\"event\"},{\"data\":[],\"keys\":[],\"name\":\"escape_canceled\",\"type\":\"event\"},{\"data\":[{\"name\":\"new_guardian\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"guardian_escaped\",\"type\":\"event\"},{\"data\":[{\"name\":\"new_signer\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"signer_escaped\",\"type\":\"event\"},{\"data\":[{\"name\":\"new_implementation\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"account_upgraded\",\"type\":\"event\"},{\"data\":[{\"name\":\"account\",\"type\":\"felt\"},{\"name\":\"key\",\"type\":\"felt\"},{\"name\":\"guardian\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"account_created\",\"type\":\"event\"},{\"data\":[{\"name\":\"hash\",\"type\":\"felt\"},{\"name\":\"response_len\",\"type\":\"felt\"},{\"name\":\"response\",\"type\":\"felt*\"}],\"keys\":[],\"name\":\"transaction_executed\",\"type\":\"event\"},{\"inputs\":[{\"name\":\"call_array_len\",\"type\":\"felt\"},{\"name\":\"call_array\",\"type\":\"CallArray*\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__validate__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"call_array_len\",\"type\":\"felt\"},{\"name\":\"call_array\",\"type\":\"CallArray*\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__execute__\",\"outputs\":[{\"name\":\"retdata_size\",\"type\":\"felt\"},{\"name\":\"retdata\",\"type\":\"felt*\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"class_hash\",\"type\":\"felt\"}],\"name\":\"__validate_declare__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_size\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__validate_deploy__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"hash\",\"type\":\"felt\"},{\"name\":\"sig_len\",\"type\":\"felt\"},{\"name\":\"sig\",\"type\":\"felt*\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"name\":\"isValid\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"felt\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"signer\",\"type\":\"felt\"},{\"name\":\"guardian\",\"type\":\"felt\"}],\"name\":\"initialize\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"implementation\",\"type\":\"felt\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"upgrade\",\"outputs\":[{\"name\":\"retdata_len\",\"type\":\"felt\"},{\"name\":\"retdata\",\"type\":\"felt*\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"call_array_len\",\"type\":\"felt\"},{\"name\":\"call_array\",\"type\":\"CallArray*\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"execute_after_upgrade\",\"outputs\":[{\"name\":\"retdata_len\",\"type\":\"felt\"},{\"name\":\"retdata\",\"type\":\"felt*\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"newSigner\",\"type\":\"felt\"}],\"name\":\"changeSigner\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"newGuardian\",\"type\":\"felt\"}],\"name\":\"changeGuardian\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"newGuardian\",\"type\":\"felt\"}],\"name\":\"changeGuardianBackup\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[],\"name\":\"triggerEscapeGuardian\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[],\"name\":\"triggerEscapeSigner\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelEscape\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"newGuardian\",\"type\":\"felt\"}],\"name\":\"escapeGuardian\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"newSigner\",\"type\":\"felt\"}],\"name\":\"escapeSigner\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSigner\",\"outputs\":[{\"name\":\"signer\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGuardian\",\"outputs\":[{\"name\":\"guardian\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGuardianBackup\",\"outputs\":[{\"name\":\"guardianBackup\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEscape\",\"outputs\":[{\"name\":\"activeAt\",\"type\":\"felt\"},{\"name\":\"type\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"name\":\"version\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"name\":\"name\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"hash\",\"type\":\"felt\"},{\"name\":\"sig_len\",\"type\":\"felt\"},{\"name\":\"sig\",\"type\":\"felt*\"}],\"name\":\"is_valid_signature\",\"outputs\":[{\"name\":\"is_valid\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"entry_points_by_type\":{\"CONSTRUCTOR\":[],\"EXTERNAL\":[{\"offset\":\"0x762\",\"selector\":\"0x529b7e53729fd0ea35e794b8f3422ac7e09c3b6e32dd6565505467c2500ea4\"},{\"offset\":\"0x715\",\"selector\":\"0x62cde820fb315bb2444ca8828f417996d4c4183014d10d9f512ca11e741509\"},{\"offset\":\"0x64f\",\"selector\":\"0x79dc0da7c54b95f10aa182ad0a46400db63156920adb65eca2654c0945a463\"},{\"offset\":\"0x874\",\"selector\":\"0x9278fa5f64a571de10741418f1c4c0c4322aef645dd9d94a429c1f3e99a8a5\"},{\"offset\":\"0x695\",\"selector\":\"0xf2f7c15cbe06c8d94597cd91fd7f3369eae842359235712def5584f8d270cd\"},{\"offset\":\"0x778\",\"selector\":\"0xf983a425403fd146fdc6a964bc73affdd6845f35011c87a723931c628394ec\"},{\"offset\":\"0x7a5\",\"selector\":\"0x121140442dcb4325a0a2c033703ba3718931ad18fde8114ac75b012d55534d1\"},{\"offset\":\"0x559\",\"selector\":\"0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad\"},{\"offset\":\"0x50e\",\"selector\":\"0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775\"},{\"offset\":\"0x6e2\",\"selector\":\"0x1a1e41f464a235695e5050a846a26ca22ecc27acac54be5f6666848031efb8f\"},{\"offset\":\"0x83f\",\"selector\":\"0x1edd8158d47d62424f3501d1f27566195850a3255ce93e89956b01f6982765c\"},{\"offset\":\"0x5f9\",\"selector\":\"0x213dfe25e2ca309c4d615a09cfc95fdb2fc7dc73fbcad12c450fe93b1f2ff9e\"},{\"offset\":\"0x7e1\",\"selector\":\"0x239e10ae97b247b05959d468aa46c8d2a3ecdc7802dcf7ba10b891b9c08a372\"},{\"offset\":\"0x894\",\"selector\":\"0x28420862938116cb3bbdbedee07451ccc54d4e9412dbef71142ad1980a30941\"},{\"offset\":\"0x59f\",\"selector\":\"0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3\"},{\"offset\":\"0x627\",\"selector\":\"0x29e211664c0b63c79638fbea474206ca74016b3e9a3dc4f9ac300ffd8bdf2cd\"},{\"offset\":\"0x85b\",\"selector\":\"0x2aa20ff86b29546fd697eb81064769cf566031d56b10b8bba2c70125bd8403a\"},{\"offset\":\"0x72f\",\"selector\":\"0x2dd8cf34d192b6c4448f9717eac28668efac0bff6733c9b9f8f62156cbb061e\"},{\"offset\":\"0x800\",\"selector\":\"0x2ff51bcdcbd41bef2550e0f8a9d9dd79e4f98dbcb549b95c37063306f3609f0\"},{\"offset\":\"0x78e\",\"selector\":\"0x31192dded6b74f2dc49269501217664c259d80f2f536d3e28db0ba7bec552cf\"},{\"offset\":\"0x7bf\",\"selector\":\"0x337911595c795dcc8a63e228cae2dd2c63849ad8827172108bb7212a3e323ef\"},{\"offset\":\"0x81f\",\"selector\":\"0x33af5ebe001ea89636c2da77a3c8294c282b0d378d72b1a4a4c25b675ae2310\"},{\"offset\":\"0x749\",\"selector\":\"0x35de51632091a69425f5316febbc814cde19717d4d00a48c1e4aa92ccaf0bf0\"},{\"offset\":\"0x5d3\",\"selector\":\"0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895\"}],\"L1_HANDLER\":[]},\"program\":{\"attributes\":[{\"accessible_scopes\":[\"contracts.utils.calls\",\"contracts.utils.calls.execute_calls\"],\"end_pc\":177,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":19,\"offset\":3},\"reference_ids\":{\"contracts.utils.calls.execute_calls.index\":13}},\"name\":\"error_message\",\"start_pc\":167,\"value\":\"multicall {index} failed\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.assert_only_self\"],\"end_pc\":578,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":47,\"offset\":12},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":577,\"value\":\"argent: only self\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.assert_initialized\"],\"end_pc\":587,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":48,\"offset\":23},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":585,\"value\":\"argent: account not initialized\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.assert_non_reentrant\"],\"end_pc\":596,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":49,\"offset\":6},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":594,\"value\":\"argent: no reentrant call\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.assert_correct_tx_version\"],\"end_pc\":605,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":50,\"offset\":0},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":598,\"value\":\"argent: invalid tx version\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.assert_guardian_set\"],\"end_pc\":614,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":51,\"offset\":23},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":612,\"value\":\"argent: guardian required\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.initialize\"],\"end_pc\":640,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":54,\"offset\":23},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":638,\"value\":\"argent: already initialized\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.initialize\"],\"end_pc\":643,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":54,\"offset\":23},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":640,\"value\":\"argent: signer cannot be null\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.upgrade\"],\"end_pc\":675,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":55,\"offset\":16},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":656,\"value\":\"argent: invalid implementation\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.change_signer\"],\"end_pc\":696,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":56,\"offset\":16},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":693,\"value\":\"argent: signer cannot be null\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.change_guardian\"],\"end_pc\":724,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":57,\"offset\":38},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":722,\"value\":\"argent: new guardian invalid\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.trigger_escape_signer\"],\"end_pc\":801,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":60,\"offset\":76},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":796,\"value\":\"argent: cannot override escape\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.cancel_escape\"],\"end_pc\":833,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":61,\"offset\":46},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":830,\"value\":\"argent: no active escape\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.escape_guardian\"],\"end_pc\":867,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":62,\"offset\":82},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":864,\"value\":\"argent: not escaping\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.escape_guardian\"],\"end_pc\":872,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":62,\"offset\":85},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":867,\"value\":\"argent: escape not active\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.escape_guardian\"],\"end_pc\":874,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":62,\"offset\":95},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":872,\"value\":\"argent: escape type invalid\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.escape_signer\"],\"end_pc\":918,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":63,\"offset\":82},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":915,\"value\":\"argent: not escaping\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.escape_signer\"],\"end_pc\":923,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":63,\"offset\":85},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":918,\"value\":\"argent: escape not active\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.escape_signer\"],\"end_pc\":925,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":63,\"offset\":95},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":923,\"value\":\"argent: escape type invalid\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.validate_signer_signature\"],\"end_pc\":1058,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":72,\"offset\":0},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":1041,\"value\":\"argent: signer signature invalid\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.validate_guardian_signature\"],\"end_pc\":1092,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":73,\"offset\":24},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":1085,\"value\":\"argent: guardian signature invalid\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.validate_guardian_signature\"],\"end_pc\":1111,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":73,\"offset\":47},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":1104,\"value\":\"argent: signature format invalid\"},{\"accessible_scopes\":[\"contracts.account.library\",\"contracts.account.library.ArgentModel\",\"contracts.account.library.ArgentModel.validate_guardian_signature\"],\"end_pc\":1118,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":73,\"offset\":50},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":1111,\"value\":\"argent: guardian backup signature invalid\"},{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__main__.__validate__\"],\"end_pc\":1260,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":77,\"offset\":57},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":1255,\"value\":\"argent: forbidden call\"}],\"builtins\":[\"pedersen\",\"range_check\",\"ecdsa\"],\"compiler_version\":\"0.10.2\",\"data\":[\"0x40780017fff7fff\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffd\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480080007fff8000\",\"0x400080007ffd7fff\",\"0x482480017ffd8001\",\"0x1\",\"0x482480017ffd8001\",\"0x1\",\"0xa0680017fff7ffe\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb\",\"0x402a7ffc7ffd7fff\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffd\",\"0x4\",\"0x400780017fff7ffd\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x400380007ffc7ffd\",\"0x482680017ffc8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x48297ffc80007ffd\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x43616c6c436f6e7472616374\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x7\",\"0x480280057ff98000\",\"0x480280067ff98000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x4c69627261727943616c6c\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x7\",\"0x480280057ff98000\",\"0x480280067ff98000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x47657443616c6c657241646472657373\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x476574436f6e747261637441646472657373\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x476574426c6f636b54696d657374616d70\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f7261676552656164\",\"0x400280007ffc7fff\",\"0x400380017ffc7ffd\",\"0x482680017ffc8000\",\"0x3\",\"0x480280027ffc8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f726167655772697465\",\"0x400280007ffb7fff\",\"0x400380017ffb7ffc\",\"0x400380027ffb7ffd\",\"0x482680017ffb8000\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x456d69744576656e74\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x5\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x4765745478496e666f\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffa\",\"0x4\",\"0x480a7ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x400280007ffd7fff\",\"0x480280017ffb8000\",\"0x400280017ffd7fff\",\"0x480280037ffb8000\",\"0x400280027ffd7fff\",\"0x480280027ffb8000\",\"0x48327fff7ffc8000\",\"0x400280037ffd7fff\",\"0x480a7ff97fff8000\",\"0x482680017ffa8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x482680017ffb8000\",\"0x4\",\"0x480a7ffc7fff8000\",\"0x482680017ffd8000\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff79\",\"0x40137fff7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffd7fff8000\",\"0x480a80007fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdf\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6f\",\"0x40137fff7fff8001\",\"0x48127ffc7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a80007fff8000\",\"0x480a80017fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x4\",\"0x480a80017fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x20780017fff7ffa\",\"0x6\",\"0x480a7ff97fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x208b7fff7fff7ffe\",\"0x480a7ff97fff8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280037ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff75\",\"0x40137ffe7fff8000\",\"0x40137fff7fff8001\",\"0x40137ffd7fff8002\",\"0x480a7ffc7fff8000\",\"0x480a80017fff8000\",\"0x480a80007fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff50\",\"0x480a80027fff8000\",\"0x482680017ffa8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x482680017ffb8000\",\"0x4\",\"0x482a80007ffc8000\",\"0x482680017ffd8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe2\",\"0x48127ffe7fff8000\",\"0x482880007ffe8000\",\"0x208b7fff7fff7ffe\",\"0x400380017ff97ffa\",\"0x400380007ff97ffb\",\"0x482680017ff98000\",\"0x2\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff82\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff39\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1c\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0xb3dad08565eac3fa5d58691be077d428ef3156ff5407bd4bbee0ac68ab8f63\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff16\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff67\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff04\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x23bad8d102433c088e9db7ed1c63d3c97cb2af1471606a71fbb60449e867f8f\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffefe\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff4f\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeec\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x107a2e2e5a8b6552e977246c45bfac446305174e86be2e5c74e8c0a20fd1de7\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee6\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff37\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed4\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x2a51090713d169db8c21b794b222ff5dfad9498a96f87856bd08e4e18f1d5b9\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffece\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1f\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffebc\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x30398ee6b5eb5f9dd0e4bb0a1b0e3ea13bbab3b2cb6675988ccaa92961c7d1\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb6\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff07\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffea4\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x2e011d5f09eaddee926fc346351731750ccf087bf843692ad9718681d7cbaa5\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe9e\",\"0x40137fff7fff8001\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4829800180008001\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef2\",\"0x480a7ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8f\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x7a0aed07bb70ba331488c013b98ac5b836c5b713c7c0acda355543bb61e321\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe89\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeda\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe77\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0xec4e9763d54a0a721416be3adfaba05ef0e02c6cf6ee4cd4d1ed0dd0f6d7e7\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe71\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec2\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe5f\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x112d26124b60e4d99e8c4387c732086fd96b159bf3d72e6d8f5f60c944533f1\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe59\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeaa\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8b\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe85\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x31e7534f8ddb1628d6e07db5c743e33403b9a0b57508a93f4c49582040a2f71\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe6d\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe67\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x1c0f41bf28d630c8a0bd10f3a5d5c0d1619cf96cfdb7da51b112c420ced36c9\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe4f\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe49\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x13f17de67551ae34866d4aa875cbace82f3a041eaa58b1d9e34568b0d0561b\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe31\",\"0x48127ffe7fff8000\",\"0x482480017ff78000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe2c\",\"0x48127ffe7fff8000\",\"0x48127fee7fff8000\",\"0x48127fee7fff8000\",\"0x48127ff57fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe7\",\"0x480a7ff97fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe25\",\"0x482480017ff88000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe20\",\"0x48127ff07fff8000\",\"0x48127ff07fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe04\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdfa\",\"0x40127fff7fff7ff9\",\"0x48127ffe7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff77\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdca\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffde9\",\"0x400680017fff7fff\",\"0x0\",\"0x48127ffe7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x482680017ffd8000\",\"0x800000000000010ffffffffffffffff00000000000000000000000000000000\",\"0x480680017fff8000\",\"0x0\",\"0x40507ffe7ffd7fff\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7a\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdaf\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffc\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480280007ffd8000\",\"0x48287ffb80007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffda4\",\"0x480a7ffb7fff8000\",\"0x482680017ffc8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x482680017ffd8000\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff5\",\"0x208b7fff7fff7ffe\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff42\",\"0x400680017fff7fff\",\"0x0\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd92\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff44\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff5f\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffae\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd71\",\"0x480680017fff8000\",\"0x3943f10f\",\"0x400080007ffe7fff\",\"0x48127ffb7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x29e211664c0b63c79638fbea474206ca74016b3e9a3dc4f9ac300ffd8bdf2cd\",\"0x480680017fff8000\",\"0x1\",\"0x48127ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd91\",\"0x400680017fff7ffe\",\"0x1\",\"0x480680017fff8000\",\"0x1\",\"0x400080007ffe7fff\",\"0x48127ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe33\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef5\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff89\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd5d\",\"0x48127ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0f\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe23\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x0\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff72\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff2c\",\"0x20780017fff7ffd\",\"0x4\",\"0x400680017fff7fff\",\"0x0\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff11\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe1f\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff58\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff78\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1c\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe24\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff45\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff65\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd49\",\"0x48127ffe7fff8000\",\"0x48127ff77fff8000\",\"0x48127ff77fff8000\",\"0x482480017ffc8000\",\"0x93a80\",\"0x480680017fff8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff24\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x482480017fe08000\",\"0x93a80\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe1f\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff28\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff48\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffefe\",\"0x482480017fff8000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff\",\"0x480680017fff8000\",\"0x0\",\"0x40507ffe7ffc7fff\",\"0x48127ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd25\",\"0x48127ffe7fff8000\",\"0x48127ff37fff8000\",\"0x48127ff37fff8000\",\"0x482480017ffc8000\",\"0x93a80\",\"0x480680017fff8000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff00\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x482480017fe08000\",\"0x93a80\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe13\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff04\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffedc\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcd4\",\"0x48127ff87fff8000\",\"0x48127ff87fff8000\",\"0x48127ff87fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee3\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe10\",\"0x48127ffe7fff8000\",\"0x48127fe67fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x0\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee7\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff07\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffebd\",\"0x48127ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffce9\",\"0x48127ff87fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcb2\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcb6\",\"0x400680017fff7fec\",\"0x1\",\"0x48127ff17fff8000\",\"0x48127fe87fff8000\",\"0x48127ffd7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeba\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc9f\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe6f\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdf2\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x0\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb4\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed4\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8a\",\"0x48127ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcb6\",\"0x48127ff87fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc7f\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc83\",\"0x400680017fff7fec\",\"0x2\",\"0x48127ff17fff8000\",\"0x48127fe87fff8000\",\"0x48127ffd7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe87\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc6c\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe1e\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdd7\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x50\",\"0x40137fff7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x480a7ffb7fff8000\",\"0x482680017ffc8000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff\",\"0x482680017ffd8000\",\"0x2\",\"0x1104800180018000\",\"0x5c\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48527ffb80008000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffe00365a\",\"0x20680017fff7fff\",\"0x8\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffc6bc0ef2\",\"0x20680017fff7fff\",\"0x8\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffff0ef242bd\",\"0x20680017fff7fff\",\"0x8\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdc2\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdda\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdf2\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe0a\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x482680017ffc8000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc04\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffda5\",\"0x480a7ff97fff8000\",\"0x480a7ffb7fff8000\",\"0x48127ffd7fff8000\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffca4\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffd7fff8000\",\"0x48127ff37fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x0\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdae\",\"0x20680017fff7fff\",\"0x9\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480a7ff97fff8000\",\"0x48127ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x482680017ffc8000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff\",\"0x20680017fff7fff\",\"0x10\",\"0x480a7ff97fff8000\",\"0x480a7ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc82\",\"0x48127ff37fff8000\",\"0x48127ff37fff8000\",\"0x48127ffd7fff8000\",\"0x48127ff27fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdac\",\"0x400780017fff7ffc\",\"0x4\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480680017fff8000\",\"0x0\",\"0x40307ffe7ffd7fff\",\"0x480a7ff97fff8000\",\"0x480a7ffb7fff8000\",\"0x48127ffa7fff8000\",\"0x480280027ffd8000\",\"0x480280037ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc68\",\"0x48127ff17fff8000\",\"0x48127ff17fff8000\",\"0x48127ffd7fff8000\",\"0x48127ff07fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb9a\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x10c19bef19acd19b2c9f4caa40fd47c9fbe1d9f91324d44dcd36be2dae96784\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb94\",\"0x40137fff7fff8001\",\"0x4003800080017ffb\",\"0x4003800180017ffc\",\"0x4003800280017ffd\",\"0x4826800180018000\",\"0x3\",\"0x480a7ff97fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbe3\",\"0x480a7ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb80\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x5ad857f66a5b55f1301ff1ed7e098ac6d4433148f0b72ebc4a2945ab85ad53\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb7a\",\"0x40137fff7fff8001\",\"0x4003800080017ffb\",\"0x4003800180017ffc\",\"0x400380007ffa7ffc\",\"0x402780017ffa8002\",\"0x1\",\"0x4826800180018000\",\"0x2\",\"0x40297ffc7fff8003\",\"0x4826800180018000\",\"0x2\",\"0x480a7ffd7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb6e\",\"0x480a7ff97fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4829800180008003\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbc0\",\"0x480a80027fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x4\",\"0x480a7ff67fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd9e\",\"0x40137ffe7fff8000\",\"0x40137fff7fff8001\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbbc\",\"0x40137fff7fff8002\",\"0x40137ffe7fff8003\",\"0x482680017ffa8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x20680017fff7fff\",\"0x3c\",\"0x480280007ffb8000\",\"0x4802800180028000\",\"0x48307fff80007ffe\",\"0x20680017fff7fff\",\"0x35\",\"0x480280017ffb8000\",\"0x482480017fff8000\",\"0x6deebfbbd234bdea5f5d3fcc8fc45c8e76ce52e70217eeb538a4fed2aaacb30\",\"0x480280017ffb8000\",\"0x482480017fff8000\",\"0x7ad6481ac8d604015ca186b470cbdd5381f63c491cd229a9aafab983daff15d\",\"0x48507fff7ffd8000\",\"0x480280017ffb8000\",\"0x482480017fff8000\",\"0x4c86eea6a386a343759c1dd7351d22d39c7b65277d8e8def7448ded5c1cdc12\",\"0x480280017ffb8000\",\"0x482480017fff8000\",\"0x7067c5bdabfc03fb90239569b438c5002297ba0cafee37858dc6ce39d7c6b15\",\"0x48507fff7ffd8000\",\"0x20680017fff7ffa\",\"0x10\",\"0x480a80037fff8000\",\"0x480a80007fff8000\",\"0x480a7ff87fff8000\",\"0x480a80017fff8000\",\"0x4802800580028000\",\"0x4802800380028000\",\"0x4802800480028000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff42\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x20680017fff7fff\",\"0x10\",\"0x480a80037fff8000\",\"0x480a80007fff8000\",\"0x480a7ff87fff8000\",\"0x480a80017fff8000\",\"0x4802800580028000\",\"0x4802800380028000\",\"0x4802800480028000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff4a\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280017ffb8000\",\"0x482480017fff8000\",\"0x65e1be0b9b5dcba6a1afaf57b95d935dd133d85353ab41a099997b7fce10472\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb29\",\"0x10780017fff7fff\",\"0x7\",\"0x4802800180028000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd7a\",\"0x480a80037fff8000\",\"0x480a80007fff8000\",\"0x480a7ff87fff8000\",\"0x480a80017fff8000\",\"0x4802800580028000\",\"0x4802800380028000\",\"0x4802800480028000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff18\",\"0x4802800380028000\",\"0x4802800480028000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x4802800580028000\",\"0x482480017ff98000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff\",\"0x482480017ff98000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff23\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x484480017fff8000\",\"0x4\",\"0x48307fff7ffd8000\",\"0x480280027ffb8000\",\"0x480080007ffe8000\",\"0x400080017ffe7fff\",\"0x482480017ffd8000\",\"0x1\",\"0x480080007ffc8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x482480017ffc8000\",\"0x2\",\"0x480280007ffd8000\",\"0x482680017ffd8000\",\"0x1\",\"0x480080007ff38000\",\"0x482480017ff28000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff78\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffa7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x480a7ff67fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb2e\",\"0x40137fff7fff8000\",\"0x48127ffe7fff8000\",\"0x4802800080008000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd18\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd0f\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb40\",\"0x40137ffe7fff8001\",\"0x40137fff7fff8002\",\"0x48127ffd7fff8000\",\"0x480a7ff97fff8000\",\"0x4802800580008000\",\"0x480a80017fff8000\",\"0x480a80027fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff30\",\"0x48127ffe7fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x48127ffc7fff8000\",\"0x480a80017fff8000\",\"0x480a80027fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x484480017fff8000\",\"0x4\",\"0x48307fff7ffd8000\",\"0x480280027ffb8000\",\"0x480080007ffe8000\",\"0x400080017ffe7fff\",\"0x482480017ffd8000\",\"0x1\",\"0x480080007ffc8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x482480017ffc8000\",\"0x2\",\"0x480280007ffd8000\",\"0x482680017ffd8000\",\"0x1\",\"0x480080007ff38000\",\"0x482480017ff28000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc2\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ff97fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x0\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffae6\",\"0x48127ffe7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480080057ffb8000\",\"0x480080037ffa8000\",\"0x480080047ff98000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe87\",\"0x480080037fcd8000\",\"0x480080047fcc8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x480080057fc78000\",\"0x482480017ff98000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff\",\"0x482480017ff98000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe92\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd9\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffa7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x0\",\"0x480a7ff77fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffab2\",\"0x48127ffe7fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480080057ffb8000\",\"0x480080037ffa8000\",\"0x480080047ff98000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe53\",\"0x480080037fcd8000\",\"0x480080047fcc8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x480080057fc78000\",\"0x482480017ff98000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff\",\"0x482480017ff98000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe5e\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x480280027ffb8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffda\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffa7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdcc\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280017ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x482480017ffc8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x482680017ffd8000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdc\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe3\",\"0x48127ff37fff8000\",\"0x48127ff37fff8000\",\"0x48127ffb7fff8000\",\"0x48127ff27fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdbb\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffea\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc3b\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff9fe\",\"0x48127ffe7fff8000\",\"0x48127ff87fff8000\",\"0x48127ffd7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe1d\",\"0x48127ffe7fff8000\",\"0x48127fdc7fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x2\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe4\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc27\",\"0x20780017fff7ffc\",\"0xb\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff996\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x48127ffd7fff8000\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1a1e41f464a235695e5050a846a26ca22ecc27acac54be5f6666848031efb8f\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff9b3\",\"0x48127ffd7fff8000\",\"0x48127ff27fff8000\",\"0x48127ff27fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x4003800080007ffb\",\"0x400380007ffd7ffb\",\"0x402780017ffd8001\",\"0x1\",\"0x4826800180008000\",\"0x1\",\"0x40297ffb7fff8002\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff975\",\"0x480a80017fff8000\",\"0x4829800080008002\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x480280027ffb8000\",\"0x480280017ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x482680017ffd8000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbc\",\"0x40137ffb7fff8000\",\"0x40137ffc7fff8001\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd6\",\"0x480a80007fff8000\",\"0x480a80017fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x480a7ff77fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb83\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff985\",\"0x40137ffe7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbab\",\"0x480a80007fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff9c0\",\"0x48127ffd7fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x4003800080007ffb\",\"0x400380007ffd7ffb\",\"0x402780017ffd8001\",\"0x1\",\"0x4826800180008000\",\"0x1\",\"0x40297ffb7fff8002\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff928\",\"0x480a80017fff8000\",\"0x4829800080008002\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x484480017fff8000\",\"0x4\",\"0x48307fff7ffd8000\",\"0x480280027ffb8000\",\"0x480080007ffe8000\",\"0x400080017ffe7fff\",\"0x482480017ffd8000\",\"0x1\",\"0x480080007ffc8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x2\",\"0x480280007ffd8000\",\"0x482680017ffd8000\",\"0x1\",\"0x480080007ff48000\",\"0x482480017ff38000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb7\",\"0x40137ffb7fff8000\",\"0x40137ffc7fff8001\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcb\",\"0x480a80007fff8000\",\"0x480a80017fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffba1\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb9c\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb9e\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb98\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff7\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb9f\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff7\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbad\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff7\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbb1\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbca\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc25\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc0c\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbf3\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbda\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffb\",\"0x4003800180007ffc\",\"0x4826800180008000\",\"0x2\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0\",\"0x48127ff37fff8000\",\"0x48127ff37fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x302e322e33\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff4\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff4\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x417267656e744163636f756e74\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff4\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff4\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb31\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280017ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x482480017ffc8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x482680017ffd8000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdc\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe3\",\"0x48127ff37fff8000\",\"0x48127ff37fff8000\",\"0x48127ffb7fff8000\",\"0x48127ff27fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\"],\"hints\":{\"0\":[{\"accessible_scopes\":[\"starkware.cairo.common.alloc\",\"starkware.cairo.common.alloc.alloc\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":0,\"offset\":0},\"reference_ids\":{}}}],\"6\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"vm_enter_scope({'n': ids.len})\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":1,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.memcpy.memcpy.len\":0}}}],\"14\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"n -= 1\\nids.continue_copying = 1 if n > 0 else 0\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":1,\"offset\":5},\"reference_ids\":{\"starkware.cairo.common.memcpy.memcpy.continue_copying\":1}}}],\"17\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"vm_exit_scope()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":1,\"offset\":6},\"reference_ids\":{}}}],\"18\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_not_zero\"],\"code\":\"from starkware.cairo.common.math_utils import assert_integer\\nassert_integer(ids.value)\\nassert ids.value % PRIME != 0, f'assert_not_zero failed: {ids.value} = 0.'\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.math.assert_not_zero.value\":2}}}],\"23\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_nn\"],\"code\":\"from starkware.cairo.common.math_utils import assert_integer\\nassert_integer(ids.a)\\nassert 0 <= ids.a % PRIME < range_check_builtin.bound, f'a = {ids.a} is out of range.'\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":3,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.math.assert_nn.a\":3}}}],\"39\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.call_contract\"],\"code\":\"syscall_handler.call_contract(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":5,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.call_contract.syscall_ptr\":4}}}],\"51\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.library_call\"],\"code\":\"syscall_handler.library_call(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":6,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.library_call.syscall_ptr\":5}}}],\"59\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_caller_address\"],\"code\":\"syscall_handler.get_caller_address(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":7,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\":6}}}],\"66\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_contract_address\"],\"code\":\"syscall_handler.get_contract_address(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":8,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_contract_address.syscall_ptr\":7}}}],\"73\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_block_timestamp\"],\"code\":\"syscall_handler.get_block_timestamp(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":9,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_block_timestamp.syscall_ptr\":8}}}],\"81\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.storage_read\"],\"code\":\"syscall_handler.storage_read(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":10,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\":9}}}],\"90\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.storage_write\"],\"code\":\"syscall_handler.storage_write(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":11,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\":10}}}],\"100\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.emit_event\"],\"code\":\"syscall_handler.emit_event(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":12,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.emit_event.syscall_ptr\":11}}}],\"106\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_tx_info\"],\"code\":\"syscall_handler.get_tx_info(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":13,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_tx_info.syscall_ptr\":12}}}],\"195\":[{\"accessible_scopes\":[\"starkware.cairo.common.signature\",\"starkware.cairo.common.signature.verify_ecdsa_signature\"],\"code\":\"ecdsa_builtin.add_signature(ids.ecdsa_ptr.address_, (ids.signature_r, ids.signature_s))\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":22,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.signature.verify_ecdsa_signature.ecdsa_ptr\":16,\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_r\":14,\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_s\":15}}}],\"1325\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__validate__\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":84,\"offset\":0},\"reference_ids\":{}}}],\"1449\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__validate_declare__\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":93,\"offset\":0},\"reference_ids\":{}}}],\"1500\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__validate_deploy__\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":97,\"offset\":0},\"reference_ids\":{}}}],\"1520\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.isValidSignature_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":100,\"offset\":0},\"reference_ids\":{}}}],\"1566\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.supportsInterface_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":105,\"offset\":0},\"reference_ids\":{}}}],\"1625\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.initialize\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":109,\"offset\":118},\"reference_ids\":{}}}],\"1666\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.upgrade_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":111,\"offset\":0},\"reference_ids\":{}}}],\"1743\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.execute_after_upgrade_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":119,\"offset\":0},\"reference_ids\":{}}}],\"1822\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.changeSigner\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":125,\"offset\":82},\"reference_ids\":{}}}],\"1848\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.changeGuardian\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":127,\"offset\":101},\"reference_ids\":{}}}],\"1874\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.changeGuardianBackup\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":129,\"offset\":108},\"reference_ids\":{}}}],\"1896\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.triggerEscapeGuardian\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":131,\"offset\":121},\"reference_ids\":{}}}],\"1918\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.triggerEscapeSigner\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":133,\"offset\":151},\"reference_ids\":{}}}],\"1940\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.cancelEscape\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":135,\"offset\":114},\"reference_ids\":{}}}],\"1966\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.escapeGuardian\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":137,\"offset\":190},\"reference_ids\":{}}}],\"1992\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.escapeSigner\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":139,\"offset\":190},\"reference_ids\":{}}}],\"2008\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.getSigner_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":141,\"offset\":0},\"reference_ids\":{}}}],\"2039\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.getGuardian_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":144,\"offset\":0},\"reference_ids\":{}}}],\"2070\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.getGuardianBackup_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":147,\"offset\":0},\"reference_ids\":{}}}],\"2101\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.getEscape_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":150,\"offset\":0},\"reference_ids\":{}}}],\"2130\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.getVersion_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":153,\"offset\":0},\"reference_ids\":{}}}],\"2155\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.getName_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":156,\"offset\":0},\"reference_ids\":{}}}],\"2187\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.is_valid_signature_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":160,\"offset\":0},\"reference_ids\":{}}}]},\"identifiers\":{\"__main__.ArgentModel\":{\"destination\":\"contracts.account.library.ArgentModel\",\"type\":\"alias\"},\"__main__.CallArray\":{\"destination\":\"contracts.utils.calls.CallArray\",\"type\":\"alias\"},\"__main__.Escape\":{\"destination\":\"contracts.account.library.Escape\",\"type\":\"alias\"},\"__main__.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"__main__.NAME\":{\"type\":\"const\",\"value\":5.185236852902769e+30},\"__main__.SignatureBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"type\":\"alias\"},\"__main__.VERSION\":{\"type\":\"const\",\"value\":206933470771},\"__main__.__execute__\":{\"decorators\":[\"external\",\"raw_output\"],\"pc\":1335,\"type\":\"function\"},\"__main__.__execute__.Args\":{\"full_name\":\"__main__.__execute__.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"contracts.utils.calls.CallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"__main__.__execute__.ImplicitArgs\":{\"full_name\":\"__main__.__execute__.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.__execute__.Return\":{\"cairo_type\":\"(retdata_size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__main__.__execute__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":3},\"__main__.__validate__\":{\"decorators\":[\"external\"],\"pc\":1186,\"type\":\"function\"},\"__main__.__validate__.Args\":{\"full_name\":\"__main__.__validate__.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"contracts.utils.calls.CallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate__.ImplicitArgs\":{\"full_name\":\"__main__.__validate__.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate__.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.__validate__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":4},\"__main__.__validate_declare__\":{\"decorators\":[\"external\"],\"pc\":1407,\"type\":\"function\"},\"__main__.__validate_declare__.Args\":{\"full_name\":\"__main__.__validate_declare__.Args\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.__validate_declare__.ImplicitArgs\":{\"full_name\":\"__main__.__validate_declare__.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate_declare__.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.__validate_declare__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.__validate_deploy__\":{\"decorators\":[\"raw_input\",\"external\"],\"pc\":1459,\"type\":\"function\"},\"__main__.__validate_deploy__.Args\":{\"full_name\":\"__main__.__validate_deploy__.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.__validate_deploy__.ImplicitArgs\":{\"full_name\":\"__main__.__validate_deploy__.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate_deploy__.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.__validate_deploy__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.account_created\":{\"type\":\"namespace\"},\"__main__.account_created.Args\":{\"full_name\":\"__main__.account_created.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.account_created.ImplicitArgs\":{\"full_name\":\"__main__.account_created.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.account_created.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.account_created.SELECTOR\":{\"type\":\"const\",\"value\":4.736927048530874e+74},\"__main__.account_created.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.account_created.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"__main__.account_created.emit\":{\"decorators\":[],\"pc\":1125,\"type\":\"function\"},\"__main__.account_created.emit.Args\":{\"full_name\":\"__main__.account_created.emit.Args\",\"members\":{\"account\":{\"cairo_type\":\"felt\",\"offset\":0},\"guardian\":{\"cairo_type\":\"felt\",\"offset\":2},\"key\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"__main__.account_created.emit.ImplicitArgs\":{\"full_name\":\"__main__.account_created.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__main__.account_created.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.account_created.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"__main__.account_created.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"__main__.account_created.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__main__.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"__main__.assert_correct_tx_version\":{\"destination\":\"contracts.account.library.assert_correct_tx_version\",\"type\":\"alias\"},\"__main__.assert_initialized\":{\"destination\":\"contracts.account.library.assert_initialized\",\"type\":\"alias\"},\"__main__.assert_no_self_call\":{\"destination\":\"contracts.account.library.assert_no_self_call\",\"type\":\"alias\"},\"__main__.assert_non_reentrant\":{\"destination\":\"contracts.account.library.assert_non_reentrant\",\"type\":\"alias\"},\"__main__.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"__main__.assert_only_self\":{\"destination\":\"contracts.account.library.assert_only_self\",\"type\":\"alias\"},\"__main__.cancelEscape\":{\"decorators\":[\"external\"],\"pc\":1928,\"type\":\"function\"},\"__main__.cancelEscape.Args\":{\"full_name\":\"__main__.cancelEscape.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.cancelEscape.ImplicitArgs\":{\"full_name\":\"__main__.cancelEscape.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.cancelEscape.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.cancelEscape.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.changeGuardian\":{\"decorators\":[\"external\"],\"pc\":1832,\"type\":\"function\"},\"__main__.changeGuardian.Args\":{\"full_name\":\"__main__.changeGuardian.Args\",\"members\":{\"newGuardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.changeGuardian.ImplicitArgs\":{\"full_name\":\"__main__.changeGuardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.changeGuardian.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.changeGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.changeGuardianBackup\":{\"decorators\":[\"external\"],\"pc\":1858,\"type\":\"function\"},\"__main__.changeGuardianBackup.Args\":{\"full_name\":\"__main__.changeGuardianBackup.Args\",\"members\":{\"newGuardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.changeGuardianBackup.ImplicitArgs\":{\"full_name\":\"__main__.changeGuardianBackup.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.changeGuardianBackup.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.changeGuardianBackup.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.changeSigner\":{\"decorators\":[\"external\"],\"pc\":1806,\"type\":\"function\"},\"__main__.changeSigner.Args\":{\"full_name\":\"__main__.changeSigner.Args\",\"members\":{\"newSigner\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.changeSigner.ImplicitArgs\":{\"full_name\":\"__main__.changeSigner.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.changeSigner.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.changeSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.escapeGuardian\":{\"decorators\":[\"external\"],\"pc\":1950,\"type\":\"function\"},\"__main__.escapeGuardian.Args\":{\"full_name\":\"__main__.escapeGuardian.Args\",\"members\":{\"newGuardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.escapeGuardian.ImplicitArgs\":{\"full_name\":\"__main__.escapeGuardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.escapeGuardian.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.escapeGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.escapeSigner\":{\"decorators\":[\"external\"],\"pc\":1976,\"type\":\"function\"},\"__main__.escapeSigner.Args\":{\"full_name\":\"__main__.escapeSigner.Args\",\"members\":{\"newSigner\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.escapeSigner.ImplicitArgs\":{\"full_name\":\"__main__.escapeSigner.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.escapeSigner.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.escapeSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.execute_after_upgrade\":{\"decorators\":[\"external\"],\"pc\":1718,\"type\":\"function\"},\"__main__.execute_after_upgrade.Args\":{\"full_name\":\"__main__.execute_after_upgrade.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"contracts.utils.calls.CallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"__main__.execute_after_upgrade.ImplicitArgs\":{\"full_name\":\"__main__.execute_after_upgrade.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.execute_after_upgrade.Return\":{\"cairo_type\":\"(retdata_len: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__main__.execute_after_upgrade.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__main__.execute_call_array\":{\"destination\":\"contracts.utils.calls.execute_call_array\",\"type\":\"alias\"},\"__main__.getEscape\":{\"decorators\":[\"view\"],\"pc\":2095,\"type\":\"function\"},\"__main__.getEscape.Args\":{\"full_name\":\"__main__.getEscape.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getEscape.ImplicitArgs\":{\"full_name\":\"__main__.getEscape.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.getEscape.Return\":{\"cairo_type\":\"(activeAt: felt, type: felt)\",\"type\":\"type_definition\"},\"__main__.getEscape.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.getGuardian\":{\"decorators\":[\"view\"],\"pc\":2033,\"type\":\"function\"},\"__main__.getGuardian.Args\":{\"full_name\":\"__main__.getGuardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getGuardian.ImplicitArgs\":{\"full_name\":\"__main__.getGuardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.getGuardian.Return\":{\"cairo_type\":\"(guardian: felt)\",\"type\":\"type_definition\"},\"__main__.getGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.getGuardianBackup\":{\"decorators\":[\"view\"],\"pc\":2064,\"type\":\"function\"},\"__main__.getGuardianBackup.Args\":{\"full_name\":\"__main__.getGuardianBackup.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getGuardianBackup.ImplicitArgs\":{\"full_name\":\"__main__.getGuardianBackup.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.getGuardianBackup.Return\":{\"cairo_type\":\"(guardianBackup: felt)\",\"type\":\"type_definition\"},\"__main__.getGuardianBackup.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.getName\":{\"decorators\":[\"view\"],\"pc\":2152,\"type\":\"function\"},\"__main__.getName.Args\":{\"full_name\":\"__main__.getName.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getName.ImplicitArgs\":{\"full_name\":\"__main__.getName.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getName.Return\":{\"cairo_type\":\"(name: felt)\",\"type\":\"type_definition\"},\"__main__.getName.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.getSigner\":{\"decorators\":[\"view\"],\"pc\":2002,\"type\":\"function\"},\"__main__.getSigner.Args\":{\"full_name\":\"__main__.getSigner.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getSigner.ImplicitArgs\":{\"full_name\":\"__main__.getSigner.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.getSigner.Return\":{\"cairo_type\":\"(signer: felt)\",\"type\":\"type_definition\"},\"__main__.getSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.getVersion\":{\"decorators\":[\"view\"],\"pc\":2127,\"type\":\"function\"},\"__main__.getVersion.Args\":{\"full_name\":\"__main__.getVersion.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getVersion.ImplicitArgs\":{\"full_name\":\"__main__.getVersion.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getVersion.Return\":{\"cairo_type\":\"(version: felt)\",\"type\":\"type_definition\"},\"__main__.getVersion.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.get_contract_address\":{\"destination\":\"starkware.starknet.common.syscalls.get_contract_address\",\"type\":\"alias\"},\"__main__.get_tx_info\":{\"destination\":\"starkware.starknet.common.syscalls.get_tx_info\",\"type\":\"alias\"},\"__main__.initialize\":{\"decorators\":[\"external\"],\"pc\":1594,\"type\":\"function\"},\"__main__.initialize.Args\":{\"full_name\":\"__main__.initialize.Args\",\"members\":{\"guardian\":{\"cairo_type\":\"felt\",\"offset\":1},\"signer\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__main__.initialize.ImplicitArgs\":{\"full_name\":\"__main__.initialize.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.initialize.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.initialize.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.isValidSignature\":{\"decorators\":[\"view\"],\"pc\":1510,\"type\":\"function\"},\"__main__.isValidSignature.Args\":{\"full_name\":\"__main__.isValidSignature.Args\",\"members\":{\"hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"sig\":{\"cairo_type\":\"felt*\",\"offset\":2},\"sig_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"__main__.isValidSignature.ImplicitArgs\":{\"full_name\":\"__main__.isValidSignature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.isValidSignature.Return\":{\"cairo_type\":\"(isValid: felt)\",\"type\":\"type_definition\"},\"__main__.isValidSignature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.is_valid_signature\":{\"decorators\":[\"view\"],\"pc\":2177,\"type\":\"function\"},\"__main__.is_valid_signature.Args\":{\"full_name\":\"__main__.is_valid_signature.Args\",\"members\":{\"hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"sig\":{\"cairo_type\":\"felt*\",\"offset\":2},\"sig_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"__main__.is_valid_signature.ImplicitArgs\":{\"full_name\":\"__main__.is_valid_signature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.is_valid_signature.Return\":{\"cairo_type\":\"(is_valid: felt)\",\"type\":\"type_definition\"},\"__main__.is_valid_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.library_call\":{\"destination\":\"starkware.starknet.common.syscalls.library_call\",\"type\":\"alias\"},\"__main__.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__main__.supportsInterface\":{\"decorators\":[\"view\"],\"pc\":1559,\"type\":\"function\"},\"__main__.supportsInterface.Args\":{\"full_name\":\"__main__.supportsInterface.Args\",\"members\":{\"interfaceId\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.supportsInterface.ImplicitArgs\":{\"full_name\":\"__main__.supportsInterface.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.supportsInterface.Return\":{\"cairo_type\":\"(success: felt)\",\"type\":\"type_definition\"},\"__main__.supportsInterface.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.transaction_executed\":{\"type\":\"namespace\"},\"__main__.transaction_executed.Args\":{\"full_name\":\"__main__.transaction_executed.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.transaction_executed.ImplicitArgs\":{\"full_name\":\"__main__.transaction_executed.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.transaction_executed.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.transaction_executed.SELECTOR\":{\"type\":\"const\",\"value\":1.6050938450689777e+74},\"__main__.transaction_executed.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.transaction_executed.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"__main__.transaction_executed.emit\":{\"decorators\":[],\"pc\":1151,\"type\":\"function\"},\"__main__.transaction_executed.emit.Args\":{\"full_name\":\"__main__.transaction_executed.emit.Args\",\"members\":{\"hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"response\":{\"cairo_type\":\"felt*\",\"offset\":2},\"response_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"__main__.transaction_executed.emit.ImplicitArgs\":{\"full_name\":\"__main__.transaction_executed.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__main__.transaction_executed.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.transaction_executed.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":4},\"__main__.transaction_executed.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"__main__.transaction_executed.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__main__.triggerEscapeGuardian\":{\"decorators\":[\"external\"],\"pc\":1884,\"type\":\"function\"},\"__main__.triggerEscapeGuardian.Args\":{\"full_name\":\"__main__.triggerEscapeGuardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.triggerEscapeGuardian.ImplicitArgs\":{\"full_name\":\"__main__.triggerEscapeGuardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.triggerEscapeGuardian.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.triggerEscapeGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.triggerEscapeSigner\":{\"decorators\":[\"external\"],\"pc\":1906,\"type\":\"function\"},\"__main__.triggerEscapeSigner.Args\":{\"full_name\":\"__main__.triggerEscapeSigner.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.triggerEscapeSigner.ImplicitArgs\":{\"full_name\":\"__main__.triggerEscapeSigner.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.triggerEscapeSigner.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.triggerEscapeSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.upgrade\":{\"decorators\":[\"external\"],\"pc\":1635,\"type\":\"function\"},\"__main__.upgrade.Args\":{\"full_name\":\"__main__.upgrade.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":1},\"implementation\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.upgrade.ImplicitArgs\":{\"full_name\":\"__main__.upgrade.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.upgrade.Return\":{\"cairo_type\":\"(retdata_len: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__main__.upgrade.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__execute__\":{\"decorators\":[\"external\",\"raw_output\"],\"pc\":1369,\"type\":\"function\"},\"__wrappers__.__execute__.Args\":{\"full_name\":\"__wrappers__.__execute__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__execute__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__execute__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__execute__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__execute__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__execute__.__wrapped_func\":{\"destination\":\"__main__.__execute__\",\"type\":\"alias\"},\"__wrappers__.__execute___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.__validate__\":{\"decorators\":[\"external\"],\"pc\":1294,\"type\":\"function\"},\"__wrappers__.__validate__.Args\":{\"full_name\":\"__wrappers__.__validate__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__validate__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__validate__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__validate__.__wrapped_func\":{\"destination\":\"__main__.__validate__\",\"type\":\"alias\"},\"__wrappers__.__validate___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.__validate_declare__\":{\"decorators\":[\"external\"],\"pc\":1439,\"type\":\"function\"},\"__wrappers__.__validate_declare__.Args\":{\"full_name\":\"__wrappers__.__validate_declare__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_declare__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__validate_declare__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_declare__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__validate_declare__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__validate_declare__.__wrapped_func\":{\"destination\":\"__main__.__validate_declare__\",\"type\":\"alias\"},\"__wrappers__.__validate_declare___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.__validate_deploy__\":{\"decorators\":[\"raw_input\",\"external\"],\"pc\":1491,\"type\":\"function\"},\"__wrappers__.__validate_deploy__.Args\":{\"full_name\":\"__wrappers__.__validate_deploy__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_deploy__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__validate_deploy__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_deploy__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__validate_deploy__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__validate_deploy__.__wrapped_func\":{\"destination\":\"__main__.__validate_deploy__\",\"type\":\"alias\"},\"__wrappers__.__validate_deploy___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.cancelEscape\":{\"decorators\":[\"external\"],\"pc\":1934,\"type\":\"function\"},\"__wrappers__.cancelEscape.Args\":{\"full_name\":\"__wrappers__.cancelEscape.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.cancelEscape.ImplicitArgs\":{\"full_name\":\"__wrappers__.cancelEscape.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.cancelEscape.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.cancelEscape.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.cancelEscape.__wrapped_func\":{\"destination\":\"__main__.cancelEscape\",\"type\":\"alias\"},\"__wrappers__.cancelEscape_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.changeGuardian\":{\"decorators\":[\"external\"],\"pc\":1839,\"type\":\"function\"},\"__wrappers__.changeGuardian.Args\":{\"full_name\":\"__wrappers__.changeGuardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.changeGuardian.ImplicitArgs\":{\"full_name\":\"__wrappers__.changeGuardian.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.changeGuardian.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.changeGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.changeGuardian.__wrapped_func\":{\"destination\":\"__main__.changeGuardian\",\"type\":\"alias\"},\"__wrappers__.changeGuardianBackup\":{\"decorators\":[\"external\"],\"pc\":1865,\"type\":\"function\"},\"__wrappers__.changeGuardianBackup.Args\":{\"full_name\":\"__wrappers__.changeGuardianBackup.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.changeGuardianBackup.ImplicitArgs\":{\"full_name\":\"__wrappers__.changeGuardianBackup.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.changeGuardianBackup.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.changeGuardianBackup.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.changeGuardianBackup.__wrapped_func\":{\"destination\":\"__main__.changeGuardianBackup\",\"type\":\"alias\"},\"__wrappers__.changeGuardianBackup_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.changeGuardian_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.changeSigner\":{\"decorators\":[\"external\"],\"pc\":1813,\"type\":\"function\"},\"__wrappers__.changeSigner.Args\":{\"full_name\":\"__wrappers__.changeSigner.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.changeSigner.ImplicitArgs\":{\"full_name\":\"__wrappers__.changeSigner.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.changeSigner.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.changeSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.changeSigner.__wrapped_func\":{\"destination\":\"__main__.changeSigner\",\"type\":\"alias\"},\"__wrappers__.changeSigner_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.escapeGuardian\":{\"decorators\":[\"external\"],\"pc\":1957,\"type\":\"function\"},\"__wrappers__.escapeGuardian.Args\":{\"full_name\":\"__wrappers__.escapeGuardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.escapeGuardian.ImplicitArgs\":{\"full_name\":\"__wrappers__.escapeGuardian.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.escapeGuardian.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.escapeGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.escapeGuardian.__wrapped_func\":{\"destination\":\"__main__.escapeGuardian\",\"type\":\"alias\"},\"__wrappers__.escapeGuardian_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.escapeSigner\":{\"decorators\":[\"external\"],\"pc\":1983,\"type\":\"function\"},\"__wrappers__.escapeSigner.Args\":{\"full_name\":\"__wrappers__.escapeSigner.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.escapeSigner.ImplicitArgs\":{\"full_name\":\"__wrappers__.escapeSigner.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.escapeSigner.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.escapeSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.escapeSigner.__wrapped_func\":{\"destination\":\"__main__.escapeSigner\",\"type\":\"alias\"},\"__wrappers__.escapeSigner_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.execute_after_upgrade\":{\"decorators\":[\"external\"],\"pc\":1762,\"type\":\"function\"},\"__wrappers__.execute_after_upgrade.Args\":{\"full_name\":\"__wrappers__.execute_after_upgrade.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.execute_after_upgrade.ImplicitArgs\":{\"full_name\":\"__wrappers__.execute_after_upgrade.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.execute_after_upgrade.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.execute_after_upgrade.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"__wrappers__.execute_after_upgrade.__wrapped_func\":{\"destination\":\"__main__.execute_after_upgrade\",\"type\":\"alias\"},\"__wrappers__.execute_after_upgrade_encode_return\":{\"decorators\":[],\"pc\":1743,\"type\":\"function\"},\"__wrappers__.execute_after_upgrade_encode_return.Args\":{\"full_name\":\"__wrappers__.execute_after_upgrade_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"ret_value\":{\"cairo_type\":\"(retdata_len: felt, retdata: felt*)\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__wrappers__.execute_after_upgrade_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.execute_after_upgrade_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.execute_after_upgrade_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.execute_after_upgrade_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":3},\"__wrappers__.execute_after_upgrade_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.getEscape\":{\"decorators\":[\"view\"],\"pc\":2111,\"type\":\"function\"},\"__wrappers__.getEscape.Args\":{\"full_name\":\"__wrappers__.getEscape.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getEscape.ImplicitArgs\":{\"full_name\":\"__wrappers__.getEscape.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getEscape.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getEscape.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.getEscape.__wrapped_func\":{\"destination\":\"__main__.getEscape\",\"type\":\"alias\"},\"__wrappers__.getEscape_encode_return\":{\"decorators\":[],\"pc\":2101,\"type\":\"function\"},\"__wrappers__.getEscape_encode_return.Args\":{\"full_name\":\"__wrappers__.getEscape_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"ret_value\":{\"cairo_type\":\"(activeAt: felt, type: felt)\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__wrappers__.getEscape_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.getEscape_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getEscape_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getEscape_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.getEscape_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.getGuardian\":{\"decorators\":[\"view\"],\"pc\":2048,\"type\":\"function\"},\"__wrappers__.getGuardian.Args\":{\"full_name\":\"__wrappers__.getGuardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getGuardian.ImplicitArgs\":{\"full_name\":\"__wrappers__.getGuardian.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getGuardian.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.getGuardian.__wrapped_func\":{\"destination\":\"__main__.getGuardian\",\"type\":\"alias\"},\"__wrappers__.getGuardianBackup\":{\"decorators\":[\"view\"],\"pc\":2079,\"type\":\"function\"},\"__wrappers__.getGuardianBackup.Args\":{\"full_name\":\"__wrappers__.getGuardianBackup.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getGuardianBackup.ImplicitArgs\":{\"full_name\":\"__wrappers__.getGuardianBackup.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getGuardianBackup.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getGuardianBackup.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.getGuardianBackup.__wrapped_func\":{\"destination\":\"__main__.getGuardianBackup\",\"type\":\"alias\"},\"__wrappers__.getGuardianBackup_encode_return\":{\"decorators\":[],\"pc\":2070,\"type\":\"function\"},\"__wrappers__.getGuardianBackup_encode_return.Args\":{\"full_name\":\"__wrappers__.getGuardianBackup_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(guardianBackup: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.getGuardianBackup_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.getGuardianBackup_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getGuardianBackup_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getGuardianBackup_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.getGuardianBackup_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.getGuardian_encode_return\":{\"decorators\":[],\"pc\":2039,\"type\":\"function\"},\"__wrappers__.getGuardian_encode_return.Args\":{\"full_name\":\"__wrappers__.getGuardian_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(guardian: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.getGuardian_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.getGuardian_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getGuardian_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getGuardian_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.getGuardian_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.getName\":{\"decorators\":[\"view\"],\"pc\":2164,\"type\":\"function\"},\"__wrappers__.getName.Args\":{\"full_name\":\"__wrappers__.getName.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getName.ImplicitArgs\":{\"full_name\":\"__wrappers__.getName.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getName.Return\":{\"cairo_type\":\"(syscall_ptr: felt, pedersen_ptr: felt, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getName.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.getName.__wrapped_func\":{\"destination\":\"__main__.getName\",\"type\":\"alias\"},\"__wrappers__.getName_encode_return\":{\"decorators\":[],\"pc\":2155,\"type\":\"function\"},\"__wrappers__.getName_encode_return.Args\":{\"full_name\":\"__wrappers__.getName_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(name: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.getName_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.getName_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getName_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getName_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.getName_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.getSigner\":{\"decorators\":[\"view\"],\"pc\":2017,\"type\":\"function\"},\"__wrappers__.getSigner.Args\":{\"full_name\":\"__wrappers__.getSigner.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getSigner.ImplicitArgs\":{\"full_name\":\"__wrappers__.getSigner.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getSigner.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.getSigner.__wrapped_func\":{\"destination\":\"__main__.getSigner\",\"type\":\"alias\"},\"__wrappers__.getSigner_encode_return\":{\"decorators\":[],\"pc\":2008,\"type\":\"function\"},\"__wrappers__.getSigner_encode_return.Args\":{\"full_name\":\"__wrappers__.getSigner_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(signer: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.getSigner_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.getSigner_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getSigner_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getSigner_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.getSigner_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.getVersion\":{\"decorators\":[\"view\"],\"pc\":2139,\"type\":\"function\"},\"__wrappers__.getVersion.Args\":{\"full_name\":\"__wrappers__.getVersion.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getVersion.ImplicitArgs\":{\"full_name\":\"__wrappers__.getVersion.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getVersion.Return\":{\"cairo_type\":\"(syscall_ptr: felt, pedersen_ptr: felt, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getVersion.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.getVersion.__wrapped_func\":{\"destination\":\"__main__.getVersion\",\"type\":\"alias\"},\"__wrappers__.getVersion_encode_return\":{\"decorators\":[],\"pc\":2130,\"type\":\"function\"},\"__wrappers__.getVersion_encode_return.Args\":{\"full_name\":\"__wrappers__.getVersion_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(version: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.getVersion_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.getVersion_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getVersion_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getVersion_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.getVersion_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.initialize\":{\"decorators\":[\"external\"],\"pc\":1615,\"type\":\"function\"},\"__wrappers__.initialize.Args\":{\"full_name\":\"__wrappers__.initialize.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.initialize.ImplicitArgs\":{\"full_name\":\"__wrappers__.initialize.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.initialize.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.initialize.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.initialize.__wrapped_func\":{\"destination\":\"__main__.initialize\",\"type\":\"alias\"},\"__wrappers__.initialize_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.isValidSignature\":{\"decorators\":[\"view\"],\"pc\":1529,\"type\":\"function\"},\"__wrappers__.isValidSignature.Args\":{\"full_name\":\"__wrappers__.isValidSignature.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.isValidSignature.ImplicitArgs\":{\"full_name\":\"__wrappers__.isValidSignature.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.isValidSignature.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.isValidSignature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.isValidSignature.__wrapped_func\":{\"destination\":\"__main__.isValidSignature\",\"type\":\"alias\"},\"__wrappers__.isValidSignature_encode_return\":{\"decorators\":[],\"pc\":1520,\"type\":\"function\"},\"__wrappers__.isValidSignature_encode_return.Args\":{\"full_name\":\"__wrappers__.isValidSignature_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(isValid: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.isValidSignature_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.isValidSignature_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.isValidSignature_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.isValidSignature_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.isValidSignature_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.is_valid_signature\":{\"decorators\":[\"view\"],\"pc\":2196,\"type\":\"function\"},\"__wrappers__.is_valid_signature.Args\":{\"full_name\":\"__wrappers__.is_valid_signature.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.is_valid_signature.ImplicitArgs\":{\"full_name\":\"__wrappers__.is_valid_signature.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.is_valid_signature.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.is_valid_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.is_valid_signature.__wrapped_func\":{\"destination\":\"__main__.is_valid_signature\",\"type\":\"alias\"},\"__wrappers__.is_valid_signature_encode_return\":{\"decorators\":[],\"pc\":2187,\"type\":\"function\"},\"__wrappers__.is_valid_signature_encode_return.Args\":{\"full_name\":\"__wrappers__.is_valid_signature_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(is_valid: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.is_valid_signature_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.is_valid_signature_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.is_valid_signature_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.is_valid_signature_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.is_valid_signature_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.supportsInterface\":{\"decorators\":[\"view\"],\"pc\":1575,\"type\":\"function\"},\"__wrappers__.supportsInterface.Args\":{\"full_name\":\"__wrappers__.supportsInterface.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.supportsInterface.ImplicitArgs\":{\"full_name\":\"__wrappers__.supportsInterface.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.supportsInterface.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.supportsInterface.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.supportsInterface.__wrapped_func\":{\"destination\":\"__main__.supportsInterface\",\"type\":\"alias\"},\"__wrappers__.supportsInterface_encode_return\":{\"decorators\":[],\"pc\":1566,\"type\":\"function\"},\"__wrappers__.supportsInterface_encode_return.Args\":{\"full_name\":\"__wrappers__.supportsInterface_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(success: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.supportsInterface_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.supportsInterface_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.supportsInterface_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.supportsInterface_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.supportsInterface_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.triggerEscapeGuardian\":{\"decorators\":[\"external\"],\"pc\":1890,\"type\":\"function\"},\"__wrappers__.triggerEscapeGuardian.Args\":{\"full_name\":\"__wrappers__.triggerEscapeGuardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.triggerEscapeGuardian.ImplicitArgs\":{\"full_name\":\"__wrappers__.triggerEscapeGuardian.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.triggerEscapeGuardian.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.triggerEscapeGuardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.triggerEscapeGuardian.__wrapped_func\":{\"destination\":\"__main__.triggerEscapeGuardian\",\"type\":\"alias\"},\"__wrappers__.triggerEscapeGuardian_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.triggerEscapeSigner\":{\"decorators\":[\"external\"],\"pc\":1912,\"type\":\"function\"},\"__wrappers__.triggerEscapeSigner.Args\":{\"full_name\":\"__wrappers__.triggerEscapeSigner.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.triggerEscapeSigner.ImplicitArgs\":{\"full_name\":\"__wrappers__.triggerEscapeSigner.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.triggerEscapeSigner.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.triggerEscapeSigner.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.triggerEscapeSigner.__wrapped_func\":{\"destination\":\"__main__.triggerEscapeSigner\",\"type\":\"alias\"},\"__wrappers__.triggerEscapeSigner_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.upgrade\":{\"decorators\":[\"external\"],\"pc\":1685,\"type\":\"function\"},\"__wrappers__.upgrade.Args\":{\"full_name\":\"__wrappers__.upgrade.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.upgrade.ImplicitArgs\":{\"full_name\":\"__wrappers__.upgrade.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.upgrade.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.upgrade.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"__wrappers__.upgrade.__wrapped_func\":{\"destination\":\"__main__.upgrade\",\"type\":\"alias\"},\"__wrappers__.upgrade_encode_return\":{\"decorators\":[],\"pc\":1666,\"type\":\"function\"},\"__wrappers__.upgrade_encode_return.Args\":{\"full_name\":\"__wrappers__.upgrade_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"ret_value\":{\"cairo_type\":\"(retdata_len: felt, retdata: felt*)\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__wrappers__.upgrade_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.upgrade_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.upgrade_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.upgrade_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":3},\"__wrappers__.upgrade_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.ArgentModel\":{\"type\":\"namespace\"},\"contracts.account.library.ArgentModel.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.CANCEL_ESCAPE_SELECTOR\":{\"type\":\"const\",\"value\":1.387988583969095e+75},\"contracts.account.library.ArgentModel.CHANGE_GUARDIAN_SELECTOR\":{\"type\":\"const\",\"value\":1.296071702357547e+75},\"contracts.account.library.ArgentModel.CHANGE_SIGNER_SELECTOR\":{\"type\":\"const\",\"value\":1.7457212853032857e+74},\"contracts.account.library.ArgentModel.ESCAPE_GUARDIAN_SELECTOR\":{\"type\":\"const\",\"value\":5.107569515290791e+74},\"contracts.account.library.ArgentModel.ESCAPE_SECURITY_PERIOD\":{\"type\":\"const\",\"value\":604800},\"contracts.account.library.ArgentModel.ESCAPE_SIGNER_SELECTOR\":{\"type\":\"const\",\"value\":1.455116469465411e+75},\"contracts.account.library.ArgentModel.ESCAPE_TYPE_GUARDIAN\":{\"type\":\"const\",\"value\":1},\"contracts.account.library.ArgentModel.ESCAPE_TYPE_SIGNER\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.ArgentModel.EXECUTE_AFTER_UPGRADE_SELECTOR\":{\"type\":\"const\",\"value\":7.383496673403602e+74},\"contracts.account.library.ArgentModel.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.TRIGGER_ESCAPE_GUARDIAN_SELECTOR\":{\"type\":\"const\",\"value\":1.45954635736934e+74},\"contracts.account.library.ArgentModel.TRIGGER_ESCAPE_SIGNER_SELECTOR\":{\"type\":\"const\",\"value\":4.408534732554861e+74},\"contracts.account.library.ArgentModel.cancel_escape\":{\"decorators\":[],\"pc\":823,\"type\":\"function\"},\"contracts.account.library.ArgentModel.cancel_escape.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.cancel_escape.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.cancel_escape.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.cancel_escape.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.cancel_escape.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.cancel_escape.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.change_guardian\":{\"decorators\":[],\"pc\":711,\"type\":\"function\"},\"contracts.account.library.ArgentModel.change_guardian.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.change_guardian.Args\",\"members\":{\"new_guardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.change_guardian.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.change_guardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.change_guardian.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.change_guardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.change_guardian_backup\":{\"decorators\":[],\"pc\":739,\"type\":\"function\"},\"contracts.account.library.ArgentModel.change_guardian_backup.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.change_guardian_backup.Args\",\"members\":{\"new_guardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.change_guardian_backup.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.change_guardian_backup.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.change_guardian_backup.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.change_guardian_backup.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.change_signer\":{\"decorators\":[],\"pc\":690,\"type\":\"function\"},\"contracts.account.library.ArgentModel.change_signer.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.change_signer.Args\",\"members\":{\"new_signer\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.change_signer.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.change_signer.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.change_signer.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.change_signer.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.escape_guardian\":{\"decorators\":[],\"pc\":850,\"type\":\"function\"},\"contracts.account.library.ArgentModel.escape_guardian.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.escape_guardian.Args\",\"members\":{\"new_guardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.escape_guardian.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.escape_guardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.escape_guardian.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.escape_guardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.escape_signer\":{\"decorators\":[],\"pc\":901,\"type\":\"function\"},\"contracts.account.library.ArgentModel.escape_signer.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.escape_signer.Args\",\"members\":{\"new_signer\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.escape_signer.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.escape_signer.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.escape_signer.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.escape_signer.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.get_escape\":{\"decorators\":[],\"pc\":1035,\"type\":\"function\"},\"contracts.account.library.ArgentModel.get_escape.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.get_escape.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_escape.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.get_escape.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_escape.Return\":{\"cairo_type\":\"(active_at: felt, type: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.get_escape.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.get_guardian\":{\"decorators\":[],\"pc\":1023,\"type\":\"function\"},\"contracts.account.library.ArgentModel.get_guardian.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.get_guardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_guardian.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.get_guardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_guardian.Return\":{\"cairo_type\":\"(guardian: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.get_guardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.get_guardian_backup\":{\"decorators\":[],\"pc\":1029,\"type\":\"function\"},\"contracts.account.library.ArgentModel.get_guardian_backup.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.get_guardian_backup.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_guardian_backup.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.get_guardian_backup.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_guardian_backup.Return\":{\"cairo_type\":\"(guardian_backup: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.get_guardian_backup.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.get_signer\":{\"decorators\":[],\"pc\":1017,\"type\":\"function\"},\"contracts.account.library.ArgentModel.get_signer.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.get_signer.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_signer.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.get_signer.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.get_signer.Return\":{\"cairo_type\":\"(signer: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.get_signer.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.initialize\":{\"decorators\":[],\"pc\":633,\"type\":\"function\"},\"contracts.account.library.ArgentModel.initialize.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.initialize.Args\",\"members\":{\"guardian\":{\"cairo_type\":\"felt\",\"offset\":1},\"signer\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.initialize.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.initialize.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.initialize.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.initialize.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.is_valid_signature\":{\"decorators\":[],\"pc\":952,\"type\":\"function\"},\"contracts.account.library.ArgentModel.is_valid_signature.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.is_valid_signature.Args\",\"members\":{\"hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"sig\":{\"cairo_type\":\"felt*\",\"offset\":2},\"sig_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.is_valid_signature.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.is_valid_signature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.is_valid_signature.Return\":{\"cairo_type\":\"(is_valid: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.is_valid_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"contracts.account.library.ArgentModel.supports_interface\":{\"decorators\":[],\"pc\":981,\"type\":\"function\"},\"contracts.account.library.ArgentModel.supports_interface.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.supports_interface.Args\",\"members\":{\"interface_id\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.supports_interface.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.supports_interface.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.supports_interface.Return\":{\"cairo_type\":\"(success: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.supports_interface.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.trigger_escape_guardian\":{\"decorators\":[],\"pc\":758,\"type\":\"function\"},\"contracts.account.library.ArgentModel.trigger_escape_guardian.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.trigger_escape_guardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.trigger_escape_guardian.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.trigger_escape_guardian.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.trigger_escape_guardian.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.trigger_escape_guardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.trigger_escape_signer\":{\"decorators\":[],\"pc\":787,\"type\":\"function\"},\"contracts.account.library.ArgentModel.trigger_escape_signer.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.trigger_escape_signer.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.trigger_escape_signer.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.trigger_escape_signer.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.trigger_escape_signer.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.trigger_escape_signer.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.upgrade\":{\"decorators\":[],\"pc\":653,\"type\":\"function\"},\"contracts.account.library.ArgentModel.upgrade.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.upgrade.Args\",\"members\":{\"implementation\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.upgrade.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.upgrade.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.upgrade.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.upgrade.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.validate_guardian_signature\":{\"decorators\":[],\"pc\":1065,\"type\":\"function\"},\"contracts.account.library.ArgentModel.validate_guardian_signature.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.validate_guardian_signature.Args\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":0},\"signatures\":{\"cairo_type\":\"felt*\",\"offset\":2},\"signatures_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.validate_guardian_signature.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.validate_guardian_signature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.validate_guardian_signature.Return\":{\"cairo_type\":\"(is_valid: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.validate_guardian_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.ArgentModel.validate_signer_signature\":{\"decorators\":[],\"pc\":1041,\"type\":\"function\"},\"contracts.account.library.ArgentModel.validate_signer_signature.Args\":{\"full_name\":\"contracts.account.library.ArgentModel.validate_signer_signature.Args\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":0},\"signatures\":{\"cairo_type\":\"felt*\",\"offset\":2},\"signatures_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.validate_signer_signature.ImplicitArgs\":{\"full_name\":\"contracts.account.library.ArgentModel.validate_signer_signature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"contracts.account.library.ArgentModel.validate_signer_signature.Return\":{\"cairo_type\":\"(is_valid: felt)\",\"type\":\"type_definition\"},\"contracts.account.library.ArgentModel.validate_signer_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.CallArray\":{\"destination\":\"contracts.utils.calls.CallArray\",\"type\":\"alias\"},\"contracts.account.library.ERC165_ACCOUNT_INTERFACE_ID\":{\"type\":\"const\",\"value\":960753935},\"contracts.account.library.ERC165_ACCOUNT_INTERFACE_ID_OLD\":{\"type\":\"const\",\"value\":4044209476},\"contracts.account.library.Escape\":{\"full_name\":\"contracts.account.library.Escape\",\"members\":{\"active_at\":{\"cairo_type\":\"felt\",\"offset\":0},\"type\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"contracts.account.library.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.account.library.QUERY_VERSION\":{\"type\":\"const\",\"value\":3.402823669209385e+38},\"contracts.account.library.SUPPORTS_INTERFACE_SELECTOR\":{\"type\":\"const\",\"value\":1.1840158947602945e+75},\"contracts.account.library.SignatureBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"type\":\"alias\"},\"contracts.account.library.TRANSACTION_VERSION\":{\"type\":\"const\",\"value\":1},\"contracts.account.library.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"contracts.account.library._escape\":{\"type\":\"namespace\"},\"contracts.account.library._escape.Args\":{\"full_name\":\"contracts.account.library._escape.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._escape.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.account.library._escape.ImplicitArgs\":{\"full_name\":\"contracts.account.library._escape.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._escape.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._escape.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._escape.addr\":{\"decorators\":[],\"pc\":530,\"type\":\"function\"},\"contracts.account.library._escape.addr.Args\":{\"full_name\":\"contracts.account.library._escape.addr.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._escape.addr.ImplicitArgs\":{\"full_name\":\"contracts.account.library._escape.addr.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library._escape.addr.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.account.library._escape.addr.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._escape.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"contracts.account.library._escape.normalize_address\":{\"destination\":\"starkware.starknet.common.storage.normalize_address\",\"type\":\"alias\"},\"contracts.account.library._escape.read\":{\"decorators\":[],\"pc\":535,\"type\":\"function\"},\"contracts.account.library._escape.read.Args\":{\"full_name\":\"contracts.account.library._escape.read.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._escape.read.ImplicitArgs\":{\"full_name\":\"contracts.account.library._escape.read.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._escape.read.Return\":{\"cairo_type\":\"(res: contracts.account.library.Escape)\",\"type\":\"type_definition\"},\"contracts.account.library._escape.read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._escape.storage_read\":{\"destination\":\"starkware.starknet.common.syscalls.storage_read\",\"type\":\"alias\"},\"contracts.account.library._escape.storage_write\":{\"destination\":\"starkware.starknet.common.syscalls.storage_write\",\"type\":\"alias\"},\"contracts.account.library._escape.write\":{\"decorators\":[],\"pc\":554,\"type\":\"function\"},\"contracts.account.library._escape.write.Args\":{\"full_name\":\"contracts.account.library._escape.write.Args\",\"members\":{\"value\":{\"cairo_type\":\"contracts.account.library.Escape\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library._escape.write.ImplicitArgs\":{\"full_name\":\"contracts.account.library._escape.write.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._escape.write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._escape.write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian\":{\"type\":\"namespace\"},\"contracts.account.library._guardian.Args\":{\"full_name\":\"contracts.account.library._guardian.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.account.library._guardian.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._guardian.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian.addr\":{\"decorators\":[],\"pc\":470,\"type\":\"function\"},\"contracts.account.library._guardian.addr.Args\":{\"full_name\":\"contracts.account.library._guardian.addr.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian.addr.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian.addr.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library._guardian.addr.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.account.library._guardian.addr.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"contracts.account.library._guardian.normalize_address\":{\"destination\":\"starkware.starknet.common.storage.normalize_address\",\"type\":\"alias\"},\"contracts.account.library._guardian.read\":{\"decorators\":[],\"pc\":475,\"type\":\"function\"},\"contracts.account.library._guardian.read.Args\":{\"full_name\":\"contracts.account.library._guardian.read.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian.read.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian.read.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._guardian.read.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.account.library._guardian.read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian.storage_read\":{\"destination\":\"starkware.starknet.common.syscalls.storage_read\",\"type\":\"alias\"},\"contracts.account.library._guardian.storage_write\":{\"destination\":\"starkware.starknet.common.syscalls.storage_write\",\"type\":\"alias\"},\"contracts.account.library._guardian.write\":{\"decorators\":[],\"pc\":488,\"type\":\"function\"},\"contracts.account.library._guardian.write.Args\":{\"full_name\":\"contracts.account.library._guardian.write.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library._guardian.write.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian.write.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._guardian.write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._guardian.write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian_backup\":{\"type\":\"namespace\"},\"contracts.account.library._guardian_backup.Args\":{\"full_name\":\"contracts.account.library._guardian_backup.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.account.library._guardian_backup.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian_backup.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._guardian_backup.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian_backup.addr\":{\"decorators\":[],\"pc\":500,\"type\":\"function\"},\"contracts.account.library._guardian_backup.addr.Args\":{\"full_name\":\"contracts.account.library._guardian_backup.addr.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.addr.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian_backup.addr.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.addr.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.account.library._guardian_backup.addr.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian_backup.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"contracts.account.library._guardian_backup.normalize_address\":{\"destination\":\"starkware.starknet.common.storage.normalize_address\",\"type\":\"alias\"},\"contracts.account.library._guardian_backup.read\":{\"decorators\":[],\"pc\":505,\"type\":\"function\"},\"contracts.account.library._guardian_backup.read.Args\":{\"full_name\":\"contracts.account.library._guardian_backup.read.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.read.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian_backup.read.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.read.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.account.library._guardian_backup.read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._guardian_backup.storage_read\":{\"destination\":\"starkware.starknet.common.syscalls.storage_read\",\"type\":\"alias\"},\"contracts.account.library._guardian_backup.storage_write\":{\"destination\":\"starkware.starknet.common.syscalls.storage_write\",\"type\":\"alias\"},\"contracts.account.library._guardian_backup.write\":{\"decorators\":[],\"pc\":518,\"type\":\"function\"},\"contracts.account.library._guardian_backup.write.Args\":{\"full_name\":\"contracts.account.library._guardian_backup.write.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.write.ImplicitArgs\":{\"full_name\":\"contracts.account.library._guardian_backup.write.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._guardian_backup.write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._guardian_backup.write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._set_implementation\":{\"destination\":\"contracts.upgrade.Upgradable._set_implementation\",\"type\":\"alias\"},\"contracts.account.library._signer\":{\"type\":\"namespace\"},\"contracts.account.library._signer.Args\":{\"full_name\":\"contracts.account.library._signer.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._signer.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.account.library._signer.ImplicitArgs\":{\"full_name\":\"contracts.account.library._signer.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._signer.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._signer.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._signer.addr\":{\"decorators\":[],\"pc\":440,\"type\":\"function\"},\"contracts.account.library._signer.addr.Args\":{\"full_name\":\"contracts.account.library._signer.addr.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._signer.addr.ImplicitArgs\":{\"full_name\":\"contracts.account.library._signer.addr.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library._signer.addr.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.account.library._signer.addr.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._signer.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"contracts.account.library._signer.normalize_address\":{\"destination\":\"starkware.starknet.common.storage.normalize_address\",\"type\":\"alias\"},\"contracts.account.library._signer.read\":{\"decorators\":[],\"pc\":445,\"type\":\"function\"},\"contracts.account.library._signer.read.Args\":{\"full_name\":\"contracts.account.library._signer.read.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library._signer.read.ImplicitArgs\":{\"full_name\":\"contracts.account.library._signer.read.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._signer.read.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.account.library._signer.read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library._signer.storage_read\":{\"destination\":\"starkware.starknet.common.syscalls.storage_read\",\"type\":\"alias\"},\"contracts.account.library._signer.storage_write\":{\"destination\":\"starkware.starknet.common.syscalls.storage_write\",\"type\":\"alias\"},\"contracts.account.library._signer.write\":{\"decorators\":[],\"pc\":458,\"type\":\"function\"},\"contracts.account.library._signer.write.Args\":{\"full_name\":\"contracts.account.library._signer.write.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library._signer.write.ImplicitArgs\":{\"full_name\":\"contracts.account.library._signer.write.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library._signer.write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library._signer.write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.account_upgraded\":{\"type\":\"namespace\"},\"contracts.account.library.account_upgraded.Args\":{\"full_name\":\"contracts.account.library.account_upgraded.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.account_upgraded.ImplicitArgs\":{\"full_name\":\"contracts.account.library.account_upgraded.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.account_upgraded.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.account_upgraded.SELECTOR\":{\"type\":\"const\",\"value\":4.85568081463066e+74},\"contracts.account.library.account_upgraded.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.account_upgraded.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.account_upgraded.emit\":{\"decorators\":[],\"pc\":416,\"type\":\"function\"},\"contracts.account.library.account_upgraded.emit.Args\":{\"full_name\":\"contracts.account.library.account_upgraded.emit.Args\",\"members\":{\"new_implementation\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.account_upgraded.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.account_upgraded.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.account_upgraded.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.account_upgraded.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.account_upgraded.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.account_upgraded.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.assert_correct_tx_version\":{\"decorators\":[],\"pc\":598,\"type\":\"function\"},\"contracts.account.library.assert_correct_tx_version.Args\":{\"full_name\":\"contracts.account.library.assert_correct_tx_version.Args\",\"members\":{\"tx_version\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.assert_correct_tx_version.ImplicitArgs\":{\"full_name\":\"contracts.account.library.assert_correct_tx_version.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.assert_correct_tx_version.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.assert_correct_tx_version.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.assert_guardian_set\":{\"decorators\":[],\"pc\":607,\"type\":\"function\"},\"contracts.account.library.assert_guardian_set.Args\":{\"full_name\":\"contracts.account.library.assert_guardian_set.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.assert_guardian_set.ImplicitArgs\":{\"full_name\":\"contracts.account.library.assert_guardian_set.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.assert_guardian_set.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.assert_guardian_set.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.assert_initialized\":{\"decorators\":[],\"pc\":580,\"type\":\"function\"},\"contracts.account.library.assert_initialized.Args\":{\"full_name\":\"contracts.account.library.assert_initialized.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.assert_initialized.ImplicitArgs\":{\"full_name\":\"contracts.account.library.assert_initialized.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.assert_initialized.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.assert_initialized.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.assert_le\":{\"destination\":\"starkware.cairo.common.math.assert_le\",\"type\":\"alias\"},\"contracts.account.library.assert_nn\":{\"destination\":\"starkware.cairo.common.math.assert_nn\",\"type\":\"alias\"},\"contracts.account.library.assert_no_self_call\":{\"decorators\":[],\"pc\":618,\"type\":\"function\"},\"contracts.account.library.assert_no_self_call.Args\":{\"full_name\":\"contracts.account.library.assert_no_self_call.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"contracts.utils.calls.CallArray*\",\"offset\":2},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":1},\"self\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.account.library.assert_no_self_call.ImplicitArgs\":{\"full_name\":\"contracts.account.library.assert_no_self_call.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.assert_no_self_call.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.assert_no_self_call.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.assert_non_reentrant\":{\"decorators\":[],\"pc\":591,\"type\":\"function\"},\"contracts.account.library.assert_non_reentrant.Args\":{\"full_name\":\"contracts.account.library.assert_non_reentrant.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.assert_non_reentrant.ImplicitArgs\":{\"full_name\":\"contracts.account.library.assert_non_reentrant.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.assert_non_reentrant.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.assert_non_reentrant.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"contracts.account.library.assert_only_self\":{\"decorators\":[],\"pc\":571,\"type\":\"function\"},\"contracts.account.library.assert_only_self.Args\":{\"full_name\":\"contracts.account.library.assert_only_self.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.assert_only_self.ImplicitArgs\":{\"full_name\":\"contracts.account.library.assert_only_self.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.assert_only_self.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.assert_only_self.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.call_contract\":{\"destination\":\"starkware.starknet.common.syscalls.call_contract\",\"type\":\"alias\"},\"contracts.account.library.escape_canceled\":{\"type\":\"namespace\"},\"contracts.account.library.escape_canceled.Args\":{\"full_name\":\"contracts.account.library.escape_canceled.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.escape_canceled.ImplicitArgs\":{\"full_name\":\"contracts.account.library.escape_canceled.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.escape_canceled.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.escape_canceled.SELECTOR\":{\"type\":\"const\",\"value\":1.3005225371736532e+75},\"contracts.account.library.escape_canceled.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.escape_canceled.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.escape_canceled.emit\":{\"decorators\":[],\"pc\":347,\"type\":\"function\"},\"contracts.account.library.escape_canceled.emit.Args\":{\"full_name\":\"contracts.account.library.escape_canceled.emit.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.escape_canceled.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.escape_canceled.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.escape_canceled.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.escape_canceled.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.escape_canceled.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.escape_canceled.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.escape_guardian_triggered\":{\"type\":\"namespace\"},\"contracts.account.library.escape_guardian_triggered.Args\":{\"full_name\":\"contracts.account.library.escape_guardian_triggered.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.escape_guardian_triggered.ImplicitArgs\":{\"full_name\":\"contracts.account.library.escape_guardian_triggered.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.escape_guardian_triggered.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.escape_guardian_triggered.SELECTOR\":{\"type\":\"const\",\"value\":1.1962697849542542e+75},\"contracts.account.library.escape_guardian_triggered.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.escape_guardian_triggered.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.escape_guardian_triggered.emit\":{\"decorators\":[],\"pc\":299,\"type\":\"function\"},\"contracts.account.library.escape_guardian_triggered.emit.Args\":{\"full_name\":\"contracts.account.library.escape_guardian_triggered.emit.Args\",\"members\":{\"active_at\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.escape_guardian_triggered.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.escape_guardian_triggered.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.escape_guardian_triggered.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.escape_guardian_triggered.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.escape_guardian_triggered.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.escape_guardian_triggered.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.escape_signer_triggered\":{\"type\":\"namespace\"},\"contracts.account.library.escape_signer_triggered.Args\":{\"full_name\":\"contracts.account.library.escape_signer_triggered.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.escape_signer_triggered.ImplicitArgs\":{\"full_name\":\"contracts.account.library.escape_signer_triggered.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.escape_signer_triggered.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.escape_signer_triggered.SELECTOR\":{\"type\":\"const\",\"value\":8.520591126022064e+73},\"contracts.account.library.escape_signer_triggered.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.escape_signer_triggered.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.escape_signer_triggered.emit\":{\"decorators\":[],\"pc\":323,\"type\":\"function\"},\"contracts.account.library.escape_signer_triggered.emit.Args\":{\"full_name\":\"contracts.account.library.escape_signer_triggered.emit.Args\",\"members\":{\"active_at\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.escape_signer_triggered.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.escape_signer_triggered.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.escape_signer_triggered.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.escape_signer_triggered.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.escape_signer_triggered.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.escape_signer_triggered.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.get_block_timestamp\":{\"destination\":\"starkware.starknet.common.syscalls.get_block_timestamp\",\"type\":\"alias\"},\"contracts.account.library.get_caller_address\":{\"destination\":\"starkware.starknet.common.syscalls.get_caller_address\",\"type\":\"alias\"},\"contracts.account.library.get_contract_address\":{\"destination\":\"starkware.starknet.common.syscalls.get_contract_address\",\"type\":\"alias\"},\"contracts.account.library.get_tx_info\":{\"destination\":\"starkware.starknet.common.syscalls.get_tx_info\",\"type\":\"alias\"},\"contracts.account.library.guardian_backup_changed\":{\"type\":\"namespace\"},\"contracts.account.library.guardian_backup_changed.Args\":{\"full_name\":\"contracts.account.library.guardian_backup_changed.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.guardian_backup_changed.ImplicitArgs\":{\"full_name\":\"contracts.account.library.guardian_backup_changed.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.guardian_backup_changed.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.guardian_backup_changed.SELECTOR\":{\"type\":\"const\",\"value\":4.658049780787609e+74},\"contracts.account.library.guardian_backup_changed.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.guardian_backup_changed.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.guardian_backup_changed.emit\":{\"decorators\":[],\"pc\":275,\"type\":\"function\"},\"contracts.account.library.guardian_backup_changed.emit.Args\":{\"full_name\":\"contracts.account.library.guardian_backup_changed.emit.Args\",\"members\":{\"new_guardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.guardian_backup_changed.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.guardian_backup_changed.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.guardian_backup_changed.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.guardian_backup_changed.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.guardian_backup_changed.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.guardian_backup_changed.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.guardian_changed\":{\"type\":\"namespace\"},\"contracts.account.library.guardian_changed.Args\":{\"full_name\":\"contracts.account.library.guardian_changed.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.guardian_changed.ImplicitArgs\":{\"full_name\":\"contracts.account.library.guardian_changed.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.guardian_changed.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.guardian_changed.SELECTOR\":{\"type\":\"const\",\"value\":1.0100674791588217e+75},\"contracts.account.library.guardian_changed.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.guardian_changed.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.guardian_changed.emit\":{\"decorators\":[],\"pc\":251,\"type\":\"function\"},\"contracts.account.library.guardian_changed.emit.Args\":{\"full_name\":\"contracts.account.library.guardian_changed.emit.Args\",\"members\":{\"new_guardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.guardian_changed.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.guardian_changed.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.guardian_changed.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.guardian_changed.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.guardian_changed.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.guardian_changed.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.guardian_escaped\":{\"type\":\"namespace\"},\"contracts.account.library.guardian_escaped.Args\":{\"full_name\":\"contracts.account.library.guardian_escaped.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.guardian_escaped.ImplicitArgs\":{\"full_name\":\"contracts.account.library.guardian_escaped.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.guardian_escaped.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.guardian_escaped.SELECTOR\":{\"type\":\"const\",\"value\":2.1563074968808545e+74},\"contracts.account.library.guardian_escaped.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.guardian_escaped.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.guardian_escaped.emit\":{\"decorators\":[],\"pc\":368,\"type\":\"function\"},\"contracts.account.library.guardian_escaped.emit.Args\":{\"full_name\":\"contracts.account.library.guardian_escaped.emit.Args\",\"members\":{\"new_guardian\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.guardian_escaped.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.guardian_escaped.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.guardian_escaped.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.guardian_escaped.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.guardian_escaped.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.guardian_escaped.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.library_call\":{\"destination\":\"starkware.starknet.common.syscalls.library_call\",\"type\":\"alias\"},\"contracts.account.library.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.signer_changed\":{\"type\":\"namespace\"},\"contracts.account.library.signer_changed.Args\":{\"full_name\":\"contracts.account.library.signer_changed.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.signer_changed.ImplicitArgs\":{\"full_name\":\"contracts.account.library.signer_changed.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.signer_changed.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.signer_changed.SELECTOR\":{\"type\":\"const\",\"value\":3.177758270162989e+74},\"contracts.account.library.signer_changed.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.signer_changed.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.signer_changed.emit\":{\"decorators\":[],\"pc\":227,\"type\":\"function\"},\"contracts.account.library.signer_changed.emit.Args\":{\"full_name\":\"contracts.account.library.signer_changed.emit.Args\",\"members\":{\"new_signer\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.signer_changed.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.signer_changed.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.signer_changed.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.signer_changed.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.signer_changed.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.signer_changed.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.signer_escaped\":{\"type\":\"namespace\"},\"contracts.account.library.signer_escaped.Args\":{\"full_name\":\"contracts.account.library.signer_escaped.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.signer_escaped.ImplicitArgs\":{\"full_name\":\"contracts.account.library.signer_escaped.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.account.library.signer_escaped.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.signer_escaped.SELECTOR\":{\"type\":\"const\",\"value\":4.1751832496835406e+74},\"contracts.account.library.signer_escaped.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.account.library.signer_escaped.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.account.library.signer_escaped.emit\":{\"decorators\":[],\"pc\":392,\"type\":\"function\"},\"contracts.account.library.signer_escaped.emit.Args\":{\"full_name\":\"contracts.account.library.signer_escaped.emit.Args\",\"members\":{\"new_signer\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.account.library.signer_escaped.emit.ImplicitArgs\":{\"full_name\":\"contracts.account.library.signer_escaped.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"contracts.account.library.signer_escaped.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.account.library.signer_escaped.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.account.library.signer_escaped.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"contracts.account.library.signer_escaped.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.account.library.verify_ecdsa_signature\":{\"destination\":\"starkware.cairo.common.signature.verify_ecdsa_signature\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation\":{\"type\":\"namespace\"},\"contracts.upgrade.Upgradable._implementation.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._implementation.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._implementation.addr\":{\"decorators\":[],\"pc\":200,\"type\":\"function\"},\"contracts.upgrade.Upgradable._implementation.addr.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.addr.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.addr.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.addr.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.addr.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._implementation.addr.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._implementation.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.normalize_address\":{\"destination\":\"starkware.starknet.common.storage.normalize_address\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.storage_read\":{\"destination\":\"starkware.starknet.common.syscalls.storage_read\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.storage_write\":{\"destination\":\"starkware.starknet.common.syscalls.storage_write\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.write\":{\"decorators\":[],\"pc\":205,\"type\":\"function\"},\"contracts.upgrade.Upgradable._implementation.write.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.write.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.write.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.write.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._implementation.write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._set_implementation\":{\"decorators\":[],\"pc\":217,\"type\":\"function\"},\"contracts.upgrade.Upgradable._set_implementation.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._set_implementation.Args\",\"members\":{\"implementation\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._set_implementation.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._set_implementation.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._set_implementation.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._set_implementation.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"contracts.utils.calls.Call\":{\"full_name\":\"contracts.utils.calls.Call\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":1},\"to\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"contracts.utils.calls.CallArray\":{\"full_name\":\"contracts.utils.calls.CallArray\",\"members\":{\"data_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"data_offset\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":1},\"to\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"contracts.utils.calls.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"contracts.utils.calls.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.utils.calls.SignatureBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"type\":\"alias\"},\"contracts.utils.calls.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"contracts.utils.calls.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"contracts.utils.calls.assert_le\":{\"destination\":\"starkware.cairo.common.math.assert_le\",\"type\":\"alias\"},\"contracts.utils.calls.assert_nn\":{\"destination\":\"starkware.cairo.common.math.assert_nn\",\"type\":\"alias\"},\"contracts.utils.calls.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"contracts.utils.calls.call_contract\":{\"destination\":\"starkware.starknet.common.syscalls.call_contract\",\"type\":\"alias\"},\"contracts.utils.calls.execute_call_array\":{\"decorators\":[],\"pc\":134,\"type\":\"function\"},\"contracts.utils.calls.execute_call_array.Args\":{\"full_name\":\"contracts.utils.calls.execute_call_array.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"contracts.utils.calls.CallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"contracts.utils.calls.execute_call_array.ImplicitArgs\":{\"full_name\":\"contracts.utils.calls.execute_call_array.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.utils.calls.execute_call_array.Return\":{\"cairo_type\":\"(retdata_len: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"contracts.utils.calls.execute_call_array.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":2},\"contracts.utils.calls.execute_calls\":{\"decorators\":[],\"pc\":159,\"type\":\"function\"},\"contracts.utils.calls.execute_calls.Args\":{\"full_name\":\"contracts.utils.calls.execute_calls.Args\",\"members\":{\"calls\":{\"cairo_type\":\"contracts.utils.calls.Call*\",\"offset\":1},\"calls_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"index\":{\"cairo_type\":\"felt\",\"offset\":3},\"response\":{\"cairo_type\":\"felt*\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"contracts.utils.calls.execute_calls.ImplicitArgs\":{\"full_name\":\"contracts.utils.calls.execute_calls.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.utils.calls.execute_calls.Return\":{\"cairo_type\":\"(response_len: felt)\",\"type\":\"type_definition\"},\"contracts.utils.calls.execute_calls.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":3},\"contracts.utils.calls.execute_calls.index\":{\"cairo_type\":\"felt\",\"full_name\":\"contracts.utils.calls.execute_calls.index\",\"references\":[{\"ap_tracking_data\":{\"group\":19,\"offset\":0},\"pc\":159,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"contracts.utils.calls.from_call_array_to_call\":{\"decorators\":[],\"pc\":110,\"type\":\"function\"},\"contracts.utils.calls.from_call_array_to_call.Args\":{\"full_name\":\"contracts.utils.calls.from_call_array_to_call.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"contracts.utils.calls.CallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"calls\":{\"cairo_type\":\"contracts.utils.calls.Call*\",\"offset\":3}},\"size\":4,\"type\":\"struct\"},\"contracts.utils.calls.from_call_array_to_call.ImplicitArgs\":{\"full_name\":\"contracts.utils.calls.from_call_array_to_call.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.utils.calls.from_call_array_to_call.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.utils.calls.from_call_array_to_call.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.utils.calls.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"starkware.cairo.common.alloc.alloc\":{\"decorators\":[],\"pc\":0,\"type\":\"function\"},\"starkware.cairo.common.alloc.alloc.Args\":{\"full_name\":\"starkware.cairo.common.alloc.alloc.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.alloc.alloc.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.alloc.alloc.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.alloc.alloc.Return\":{\"cairo_type\":\"(ptr: felt*)\",\"type\":\"type_definition\"},\"starkware.cairo.common.alloc.alloc.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.bool.FALSE\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.bool.TRUE\":{\"type\":\"const\",\"value\":1},\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"x_and_y\":{\"cairo_type\":\"felt\",\"offset\":2},\"x_or_y\":{\"cairo_type\":\"felt\",\"offset\":4},\"x_xor_y\":{\"cairo_type\":\"felt\",\"offset\":3},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":5,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"members\":{\"m\":{\"cairo_type\":\"felt\",\"offset\":4},\"p\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":0},\"q\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":2},\"r\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.HashBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"members\":{\"result\":{\"cairo_type\":\"felt\",\"offset\":2},\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\",\"members\":{\"input\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":0},\"output\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":8}},\"size\":16,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltinState\":{\"destination\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":1},\"pub_key\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.dict_access.DictAccess\":{\"full_name\":\"starkware.cairo.common.dict_access.DictAccess\",\"members\":{\"key\":{\"cairo_type\":\"felt\",\"offset\":0},\"new_value\":{\"cairo_type\":\"felt\",\"offset\":2},\"prev_value\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.ec.EcOpBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.ec.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.ec.StarkCurve\":{\"type\":\"namespace\"},\"starkware.cairo.common.ec.StarkCurve.ALPHA\":{\"type\":\"const\",\"value\":1},\"starkware.cairo.common.ec.StarkCurve.Args\":{\"full_name\":\"starkware.cairo.common.ec.StarkCurve.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.ec.StarkCurve.BETA\":{\"type\":\"const\",\"value\":-4.76910135076338e+74},\"starkware.cairo.common.ec.StarkCurve.GEN_X\":{\"type\":\"const\",\"value\":8.747394510780078e+74},\"starkware.cairo.common.ec.StarkCurve.GEN_Y\":{\"type\":\"const\",\"value\":1.5266679207151883e+74},\"starkware.cairo.common.ec.StarkCurve.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.ec.StarkCurve.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.ec.StarkCurve.ORDER\":{\"type\":\"const\",\"value\":-9.63634636155092e+37},\"starkware.cairo.common.ec.StarkCurve.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.ec.StarkCurve.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.ec.is_quad_residue\":{\"destination\":\"starkware.cairo.common.math.is_quad_residue\",\"type\":\"alias\"},\"starkware.cairo.common.ec_point.EcPoint\":{\"full_name\":\"starkware.cairo.common.ec_point.EcPoint\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.hash.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.keccak_state.KeccakBuiltinState\":{\"full_name\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"members\":{\"s0\":{\"cairo_type\":\"felt\",\"offset\":0},\"s1\":{\"cairo_type\":\"felt\",\"offset\":1},\"s2\":{\"cairo_type\":\"felt\",\"offset\":2},\"s3\":{\"cairo_type\":\"felt\",\"offset\":3},\"s4\":{\"cairo_type\":\"felt\",\"offset\":4},\"s5\":{\"cairo_type\":\"felt\",\"offset\":5},\"s6\":{\"cairo_type\":\"felt\",\"offset\":6},\"s7\":{\"cairo_type\":\"felt\",\"offset\":7}},\"size\":8,\"type\":\"struct\"},\"starkware.cairo.common.math.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"starkware.cairo.common.math.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"starkware.cairo.common.math.assert_le\":{\"decorators\":[],\"pc\":27,\"type\":\"function\"},\"starkware.cairo.common.math.assert_le.Args\":{\"full_name\":\"starkware.cairo.common.math.assert_le.Args\",\"members\":{\"a\":{\"cairo_type\":\"felt\",\"offset\":0},\"b\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_le.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.math.assert_le.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_le.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.math.assert_le.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.math.assert_nn\":{\"decorators\":[],\"pc\":23,\"type\":\"function\"},\"starkware.cairo.common.math.assert_nn.Args\":{\"full_name\":\"starkware.cairo.common.math.assert_nn.Args\",\"members\":{\"a\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_nn.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.math.assert_nn.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_nn.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.math.assert_nn.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.math.assert_nn.a\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_nn.a\",\"references\":[{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":23,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.math.assert_not_zero\":{\"decorators\":[],\"pc\":18,\"type\":\"function\"},\"starkware.cairo.common.math.assert_not_zero.Args\":{\"full_name\":\"starkware.cairo.common.math.assert_not_zero.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_not_zero.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.math.assert_not_zero.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_not_zero.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.math.assert_not_zero.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.math.assert_not_zero.value\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_not_zero.value\",\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.memcpy.memcpy\":{\"decorators\":[],\"pc\":3,\"type\":\"function\"},\"starkware.cairo.common.memcpy.memcpy.Args\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.Args\",\"members\":{\"dst\":{\"cairo_type\":\"felt*\",\"offset\":0},\"len\":{\"cairo_type\":\"felt\",\"offset\":2},\"src\":{\"cairo_type\":\"felt*\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.LoopFrame\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.LoopFrame\",\"members\":{\"dst\":{\"cairo_type\":\"felt*\",\"offset\":0},\"src\":{\"cairo_type\":\"felt*\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.memcpy.memcpy.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.memcpy.memcpy.continue_copying\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.memcpy.memcpy.continue_copying\",\"references\":[{\"ap_tracking_data\":{\"group\":1,\"offset\":3},\"pc\":10,\"value\":\"[cast(ap, felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.memcpy.memcpy.len\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.memcpy.memcpy.len\",\"references\":[{\"ap_tracking_data\":{\"group\":1,\"offset\":0},\"pc\":3,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.memcpy.memcpy.loop\":{\"pc\":8,\"type\":\"label\"},\"starkware.cairo.common.signature.EcOpBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.signature.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.signature.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"starkware.cairo.common.signature.SignatureBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.signature.StarkCurve\":{\"destination\":\"starkware.cairo.common.ec.StarkCurve\",\"type\":\"alias\"},\"starkware.cairo.common.signature.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"starkware.cairo.common.signature.ec_add\":{\"destination\":\"starkware.cairo.common.ec.ec_add\",\"type\":\"alias\"},\"starkware.cairo.common.signature.ec_mul\":{\"destination\":\"starkware.cairo.common.ec.ec_mul\",\"type\":\"alias\"},\"starkware.cairo.common.signature.ec_sub\":{\"destination\":\"starkware.cairo.common.ec.ec_sub\",\"type\":\"alias\"},\"starkware.cairo.common.signature.is_x_on_curve\":{\"destination\":\"starkware.cairo.common.ec.is_x_on_curve\",\"type\":\"alias\"},\"starkware.cairo.common.signature.recover_y\":{\"destination\":\"starkware.cairo.common.ec.recover_y\",\"type\":\"alias\"},\"starkware.cairo.common.signature.verify_ecdsa_signature\":{\"decorators\":[],\"pc\":195,\"type\":\"function\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.Args\":{\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.Args\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":0},\"public_key\":{\"cairo_type\":\"felt\",\"offset\":1},\"signature_r\":{\"cairo_type\":\"felt\",\"offset\":2},\"signature_s\":{\"cairo_type\":\"felt\",\"offset\":3}},\"size\":4,\"type\":\"struct\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.signature.verify_ecdsa_signature.ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.ecdsa_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":22,\"offset\":0},\"pc\":195,\"value\":\"[cast(fp + (-7), starkware.cairo.common.cairo_builtins.SignatureBuiltin**)]\"},{\"ap_tracking_data\":{\"group\":22,\"offset\":0},\"pc\":197,\"value\":\"cast([fp + (-7)] + 2, starkware.cairo.common.cairo_builtins.SignatureBuiltin*)\"}],\"type\":\"reference\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_r\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_r\",\"references\":[{\"ap_tracking_data\":{\"group\":22,\"offset\":0},\"pc\":195,\"value\":\"[cast(fp + (-4), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_s\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_s\",\"references\":[{\"ap_tracking_data\":{\"group\":22,\"offset\":0},\"pc\":195,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.starknet.common.storage.ADDR_BOUND\":{\"type\":\"const\",\"value\":-1.0671072950157357e+59},\"starkware.starknet.common.storage.MAX_STORAGE_ITEM_SIZE\":{\"type\":\"const\",\"value\":256},\"starkware.starknet.common.storage.assert_250_bit\":{\"destination\":\"starkware.cairo.common.math.assert_250_bit\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.CALL_CONTRACT_SELECTOR\":{\"type\":\"const\",\"value\":2.0853273475220474e+28},\"starkware.starknet.common.syscalls.CallContract\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContract\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"members\":{\"retdata\":{\"cairo_type\":\"felt*\",\"offset\":1},\"retdata_size\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DELEGATE_CALL_SELECTOR\":{\"type\":\"const\",\"value\":2.1167594061783206e+28},\"starkware.starknet.common.syscalls.DELEGATE_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":2.3274015802972845e+40},\"starkware.starknet.common.syscalls.DEPLOY_SELECTOR\":{\"type\":\"const\",\"value\":75202468540281},\"starkware.starknet.common.syscalls.Deploy\":{\"full_name\":\"starkware.starknet.common.syscalls.Deploy\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployResponse\",\"offset\":6}},\"size\":9,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployRequest\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"constructor_calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"constructor_calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address_salt\":{\"cairo_type\":\"felt\",\"offset\":2},\"deploy_from_zero\":{\"cairo_type\":\"felt\",\"offset\":5},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":6,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployResponse\",\"members\":{\"constructor_retdata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"constructor_retdata_size\":{\"cairo_type\":\"felt\",\"offset\":1},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DictAccess\":{\"destination\":\"starkware.cairo.common.dict_access.DictAccess\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.EMIT_EVENT_SELECTOR\":{\"type\":\"const\",\"value\":1.2807093015503357e+21},\"starkware.starknet.common.syscalls.EmitEvent\":{\"full_name\":\"starkware.starknet.common.syscalls.EmitEvent\",\"members\":{\"data\":{\"cairo_type\":\"felt*\",\"offset\":4},\"data_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"keys\":{\"cairo_type\":\"felt*\",\"offset\":2},\"keys_len\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GET_BLOCK_NUMBER_SELECTOR\":{\"type\":\"const\",\"value\":1.448089106835523e+33},\"starkware.starknet.common.syscalls.GET_BLOCK_TIMESTAMP_SELECTOR\":{\"type\":\"const\",\"value\":2.4294903732626647e+40},\"starkware.starknet.common.syscalls.GET_CALLER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":9.490196778139308e+37},\"starkware.starknet.common.syscalls.GET_CONTRACT_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":6.219495360805491e+42},\"starkware.starknet.common.syscalls.GET_SEQUENCER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":1.5921908335819916e+45},\"starkware.starknet.common.syscalls.GET_TX_INFO_SELECTOR\":{\"type\":\"const\",\"value\":1.3170293902041122e+21},\"starkware.starknet.common.syscalls.GET_TX_SIGNATURE_SELECTOR\":{\"type\":\"const\",\"value\":1.44808912865234e+33},\"starkware.starknet.common.syscalls.GetBlockNumber\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumber\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"members\":{\"block_number\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestamp\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestamp\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"members\":{\"block_timestamp\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"members\":{\"caller_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"members\":{\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"members\":{\"sequencer_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfo\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"members\":{\"tx_info\":{\"cairo_type\":\"starkware.starknet.common.syscalls.TxInfo*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignature\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignature\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"members\":{\"signature\":{\"cairo_type\":\"felt*\",\"offset\":1},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LIBRARY_CALL_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":4.362334527541981e+47},\"starkware.starknet.common.syscalls.LIBRARY_CALL_SELECTOR\":{\"type\":\"const\",\"value\":9.2376026794327e+25},\"starkware.starknet.common.syscalls.LibraryCall\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCall\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LibraryCallRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.SEND_MESSAGE_TO_L1_SELECTOR\":{\"type\":\"const\",\"value\":4.3301790876830345e+35},\"starkware.starknet.common.syscalls.STORAGE_READ_SELECTOR\":{\"type\":\"const\",\"value\":1.0089069337060175e+26},\"starkware.starknet.common.syscalls.STORAGE_WRITE_SELECTOR\":{\"type\":\"const\",\"value\":2.582801750287405e+28},\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\":{\"full_name\":\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\",\"members\":{\"payload_ptr\":{\"cairo_type\":\"felt*\",\"offset\":3},\"payload_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"to_address\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageRead\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageRead\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageWrite\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageWrite\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"value\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.TxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.TxInfo\",\"members\":{\"account_contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"chain_id\":{\"cairo_type\":\"felt\",\"offset\":6},\"max_fee\":{\"cairo_type\":\"felt\",\"offset\":2},\"nonce\":{\"cairo_type\":\"felt\",\"offset\":7},\"signature\":{\"cairo_type\":\"felt*\",\"offset\":4},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"transaction_hash\":{\"cairo_type\":\"felt\",\"offset\":5},\"version\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":8,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.call_contract\":{\"decorators\":[],\"pc\":32,\"type\":\"function\"},\"starkware.starknet.common.syscalls.call_contract.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.call_contract.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.call_contract.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.call_contract.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.call_contract.Return\":{\"cairo_type\":\"(retdata_size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.call_contract.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.call_contract.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.call_contract.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":5,\"offset\":0},\"pc\":32,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":5,\"offset\":1},\"pc\":39,\"value\":\"cast([fp + (-7)] + 7, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.emit_event\":{\"decorators\":[],\"pc\":93,\"type\":\"function\"},\"starkware.starknet.common.syscalls.emit_event.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.emit_event.Args\",\"members\":{\"data\":{\"cairo_type\":\"felt*\",\"offset\":3},\"data_len\":{\"cairo_type\":\"felt\",\"offset\":2},\"keys\":{\"cairo_type\":\"felt*\",\"offset\":1},\"keys_len\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.emit_event.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.emit_event.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.emit_event.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.emit_event.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.emit_event.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.emit_event.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":12,\"offset\":0},\"pc\":93,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":12,\"offset\":1},\"pc\":100,\"value\":\"cast([fp + (-7)] + 5, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_block_timestamp\":{\"decorators\":[],\"pc\":70,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_block_timestamp.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_block_timestamp.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_block_timestamp.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_block_timestamp.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_block_timestamp.Return\":{\"cairo_type\":\"(block_timestamp: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_block_timestamp.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_block_timestamp.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_block_timestamp.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":9,\"offset\":0},\"pc\":70,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":9,\"offset\":1},\"pc\":73,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_caller_address\":{\"decorators\":[],\"pc\":56,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_caller_address.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_caller_address.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_caller_address.Return\":{\"cairo_type\":\"(caller_address: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_caller_address.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":7,\"offset\":0},\"pc\":56,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":7,\"offset\":1},\"pc\":59,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_contract_address\":{\"decorators\":[],\"pc\":63,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_contract_address.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_contract_address.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_contract_address.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_contract_address.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_contract_address.Return\":{\"cairo_type\":\"(contract_address: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_contract_address.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_contract_address.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_contract_address.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":8,\"offset\":0},\"pc\":63,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":8,\"offset\":1},\"pc\":66,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_tx_info\":{\"decorators\":[],\"pc\":103,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_tx_info.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_tx_info.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_tx_info.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_tx_info.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_tx_info.Return\":{\"cairo_type\":\"(tx_info: starkware.starknet.common.syscalls.TxInfo*)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_tx_info.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_tx_info.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_tx_info.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":13,\"offset\":0},\"pc\":103,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":13,\"offset\":1},\"pc\":106,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.library_call\":{\"decorators\":[],\"pc\":44,\"type\":\"function\"},\"starkware.starknet.common.syscalls.library_call.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.library_call.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.library_call.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.library_call.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.library_call.Return\":{\"cairo_type\":\"(retdata_size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.library_call.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.library_call.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.library_call.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":6,\"offset\":0},\"pc\":44,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":6,\"offset\":1},\"pc\":51,\"value\":\"cast([fp + (-7)] + 7, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.storage_read\":{\"decorators\":[],\"pc\":77,\"type\":\"function\"},\"starkware.starknet.common.syscalls.storage_read.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_read.Args\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_read.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_read.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_read.Return\":{\"cairo_type\":\"(value: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.storage_read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":77,\"value\":\"[cast(fp + (-4), felt**)]\"},{\"ap_tracking_data\":{\"group\":10,\"offset\":1},\"pc\":81,\"value\":\"cast([fp + (-4)] + 3, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.storage_write\":{\"decorators\":[],\"pc\":85,\"type\":\"function\"},\"starkware.starknet.common.syscalls.storage_write.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_write.Args\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":0},\"value\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_write.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_write.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.storage_write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":11,\"offset\":0},\"pc\":85,\"value\":\"[cast(fp + (-5), felt**)]\"},{\"ap_tracking_data\":{\"group\":11,\"offset\":1},\"pc\":90,\"value\":\"cast([fp + (-5)] + 3, felt*)\"}],\"type\":\"reference\"}},\"main_scope\":\"__main__\",\"prime\":\"0x800000000000011000000000000000000000000000000000000000000000001\",\"reference_manager\":{\"references\":[{\"ap_tracking_data\":{\"group\":1,\"offset\":0},\"pc\":3,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":1,\"offset\":3},\"pc\":10,\"value\":\"[cast(ap, felt*)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":23,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":5,\"offset\":0},\"pc\":32,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":6,\"offset\":0},\"pc\":44,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":7,\"offset\":0},\"pc\":56,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":8,\"offset\":0},\"pc\":63,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":9,\"offset\":0},\"pc\":70,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":77,\"value\":\"[cast(fp + (-4), felt**)]\"},{\"ap_tracking_data\":{\"group\":11,\"offset\":0},\"pc\":85,\"value\":\"[cast(fp + (-5), felt**)]\"},{\"ap_tracking_data\":{\"group\":12,\"offset\":0},\"pc\":93,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":13,\"offset\":0},\"pc\":103,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":19,\"offset\":0},\"pc\":159,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":22,\"offset\":0},\"pc\":195,\"value\":\"[cast(fp + (-4), felt*)]\"},{\"ap_tracking_data\":{\"group\":22,\"offset\":0},\"pc\":195,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":22,\"offset\":0},\"pc\":195,\"value\":\"[cast(fp + (-7), starkware.cairo.common.cairo_builtins.SignatureBuiltin**)]\"}]}}}"
  },
  {
    "path": "contract-artifacts/ArgentAccount/780760e4156afe592bb1feff7e769cf279ae9831/ArgentAccount.cairo/ArgentAccount_abi.json",
    "content": "[{ \"members\": [{ \"name\": \"to\", \"offset\": 0, \"type\": \"felt\" }, { \"name\": \"selector\", \"offset\": 1, \"type\": \"felt\" }, { \"name\": \"data_offset\", \"offset\": 2, \"type\": \"felt\" }, { \"name\": \"data_len\", \"offset\": 3, \"type\": \"felt\" }], \"name\": \"CallArray\", \"size\": 4, \"type\": \"struct\" }, { \"data\": [{ \"name\": \"new_signer\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"signer_changed\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"new_guardian\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"guardian_changed\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"new_guardian\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"guardian_backup_changed\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"active_at\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"escape_guardian_triggered\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"active_at\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"escape_signer_triggered\", \"type\": \"event\" }, { \"data\": [], \"keys\": [], \"name\": \"escape_canceled\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"new_guardian\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"guardian_escaped\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"new_signer\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"signer_escaped\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"new_implementation\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"account_upgraded\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"account\", \"type\": \"felt\" }, { \"name\": \"key\", \"type\": \"felt\" }, { \"name\": \"guardian\", \"type\": \"felt\" }], \"keys\": [], \"name\": \"account_created\", \"type\": \"event\" }, { \"data\": [{ \"name\": \"hash\", \"type\": \"felt\" }, { \"name\": \"response_len\", \"type\": \"felt\" }, { \"name\": \"response\", \"type\": \"felt*\" }], \"keys\": [], \"name\": \"transaction_executed\", \"type\": \"event\" }, { \"inputs\": [{ \"name\": \"call_array_len\", \"type\": \"felt\" }, { \"name\": \"call_array\", \"type\": \"CallArray*\" }, { \"name\": \"calldata_len\", \"type\": \"felt\" }, { \"name\": \"calldata\", \"type\": \"felt*\" }], \"name\": \"__validate__\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"call_array_len\", \"type\": \"felt\" }, { \"name\": \"call_array\", \"type\": \"CallArray*\" }, { \"name\": \"calldata_len\", \"type\": \"felt\" }, { \"name\": \"calldata\", \"type\": \"felt*\" }], \"name\": \"__execute__\", \"outputs\": [{ \"name\": \"retdata_size\", \"type\": \"felt\" }, { \"name\": \"retdata\", \"type\": \"felt*\" }], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"class_hash\", \"type\": \"felt\" }], \"name\": \"__validate_declare__\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"selector\", \"type\": \"felt\" }, { \"name\": \"calldata_size\", \"type\": \"felt\" }, { \"name\": \"calldata\", \"type\": \"felt*\" }], \"name\": \"__validate_deploy__\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"hash\", \"type\": \"felt\" }, { \"name\": \"sig_len\", \"type\": \"felt\" }, { \"name\": \"sig\", \"type\": \"felt*\" }], \"name\": \"isValidSignature\", \"outputs\": [{ \"name\": \"isValid\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"interfaceId\", \"type\": \"felt\" }], \"name\": \"supportsInterface\", \"outputs\": [{ \"name\": \"success\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"signer\", \"type\": \"felt\" }, { \"name\": \"guardian\", \"type\": \"felt\" }], \"name\": \"initialize\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"implementation\", \"type\": \"felt\" }, { \"name\": \"calldata_len\", \"type\": \"felt\" }, { \"name\": \"calldata\", \"type\": \"felt*\" }], \"name\": \"upgrade\", \"outputs\": [{ \"name\": \"retdata_len\", \"type\": \"felt\" }, { \"name\": \"retdata\", \"type\": \"felt*\" }], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"call_array_len\", \"type\": \"felt\" }, { \"name\": \"call_array\", \"type\": \"CallArray*\" }, { \"name\": \"calldata_len\", \"type\": \"felt\" }, { \"name\": \"calldata\", \"type\": \"felt*\" }], \"name\": \"execute_after_upgrade\", \"outputs\": [{ \"name\": \"retdata_len\", \"type\": \"felt\" }, { \"name\": \"retdata\", \"type\": \"felt*\" }], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"newSigner\", \"type\": \"felt\" }], \"name\": \"changeSigner\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"newGuardian\", \"type\": \"felt\" }], \"name\": \"changeGuardian\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"newGuardian\", \"type\": \"felt\" }], \"name\": \"changeGuardianBackup\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [], \"name\": \"triggerEscapeGuardian\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [], \"name\": \"triggerEscapeSigner\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [], \"name\": \"cancelEscape\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"newGuardian\", \"type\": \"felt\" }], \"name\": \"escapeGuardian\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"newSigner\", \"type\": \"felt\" }], \"name\": \"escapeSigner\", \"outputs\": [], \"type\": \"function\" }, { \"inputs\": [], \"name\": \"getSigner\", \"outputs\": [{ \"name\": \"signer\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"getGuardian\", \"outputs\": [{ \"name\": \"guardian\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"getGuardianBackup\", \"outputs\": [{ \"name\": \"guardianBackup\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"getEscape\", \"outputs\": [{ \"name\": \"activeAt\", \"type\": \"felt\" }, { \"name\": \"type\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"getVersion\", \"outputs\": [{ \"name\": \"version\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"getName\", \"outputs\": [{ \"name\": \"name\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"name\": \"hash\", \"type\": \"felt\" }, { \"name\": \"sig_len\", \"type\": \"felt\" }, { \"name\": \"sig\", \"type\": \"felt*\" }], \"name\": \"is_valid_signature\", \"outputs\": [{ \"name\": \"is_valid\", \"type\": \"felt\" }], \"stateMutability\": \"view\", \"type\": \"function\" }]\n"
  },
  {
    "path": "contract-artifacts/ArgentAccount/780760e4156afe592bb1feff7e769cf279ae9831/Proxy.cairo/Proxy.json",
    "content": "{\"abi\":[{\"inputs\":[{\"name\":\"implementation\",\"type\":\"felt\"},{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"constructor\",\"outputs\":[],\"type\":\"constructor\"},{\"inputs\":[{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_size\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__default__\",\"outputs\":[{\"name\":\"retdata_size\",\"type\":\"felt\"},{\"name\":\"retdata\",\"type\":\"felt*\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_size\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__l1_default__\",\"outputs\":[],\"type\":\"l1_handler\"},{\"inputs\":[],\"name\":\"get_implementation\",\"outputs\":[{\"name\":\"implementation\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"entry_points_by_type\":{\"CONSTRUCTOR\":[{\"offset\":\"0x6c\",\"selector\":\"0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194\"}],\"EXTERNAL\":[{\"offset\":\"0x9b\",\"selector\":\"0x0\"},{\"offset\":\"0xd4\",\"selector\":\"0x21691762da057c1b71f851f9b709e0c143628acf6e0cbc9735411a65663d747\"}],\"L1_HANDLER\":[{\"offset\":\"0xb4\",\"selector\":\"0x0\"}]},\"program\":{\"attributes\":[],\"builtins\":[\"pedersen\",\"range_check\"],\"compiler_version\":\"0.10.2\",\"data\":[\"0x20780017fff7ffd\",\"0x4\",\"0x400780017fff7ffd\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x4c69627261727943616c6c\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x7\",\"0x480280057ff98000\",\"0x480280067ff98000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x4c69627261727943616c6c4c3148616e646c6572\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x7\",\"0x480280057ff98000\",\"0x480280067ff98000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f7261676552656164\",\"0x400280007ffc7fff\",\"0x400380017ffc7ffd\",\"0x482680017ffc8000\",\"0x3\",\"0x480280027ffc8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f726167655772697465\",\"0x400280007ffb7fff\",\"0x400380017ffb7ffc\",\"0x400380027ffb7ffd\",\"0x482680017ffb8000\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe6\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe0\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe5\",\"0x208b7fff7fff7ffe\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffaf\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe8\",\"0x208b7fff7fff7ffe\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x48127ffd7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa0\",\"0x48127ffd7fff8000\",\"0x48127ff27fff8000\",\"0x48127ff27fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280027ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x3\",\"0x480280027ffd8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480280027ffd8000\",\"0x482680017ffd8000\",\"0x3\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffde\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc0\",\"0x48127ffc7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff73\",\"0x48127ffd7fff8000\",\"0x48127ff17fff8000\",\"0x48127ff17fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe9\",\"0x208b7fff7fff7ffe\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa5\",\"0x48127ffc7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff64\",\"0x48127ffd7fff8000\",\"0x48127ff17fff8000\",\"0x48127ff17fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffeb\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff84\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\"],\"hints\":{\"0\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_not_zero\"],\"code\":\"from starkware.cairo.common.math_utils import assert_integer\\nassert_integer(ids.value)\\nassert ids.value % PRIME != 0, f'assert_not_zero failed: {ids.value} = 0.'\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":0,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.math.assert_not_zero.value\":0}}}],\"12\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.library_call\"],\"code\":\"syscall_handler.library_call(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":1,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.library_call.syscall_ptr\":1}}}],\"24\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.library_call_l1_handler\"],\"code\":\"syscall_handler.library_call_l1_handler(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.library_call_l1_handler.syscall_ptr\":2}}}],\"33\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.storage_read\"],\"code\":\"syscall_handler.storage_read(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":3,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\":3}}}],\"42\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.storage_write\"],\"code\":\"syscall_handler.storage_write(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":4,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\":4}}}],\"128\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.constructor\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":11,\"offset\":60},\"reference_ids\":{}}}],\"188\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__l1_default__\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":15,\"offset\":50},\"reference_ids\":{}}}],\"203\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.get_implementation_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":17,\"offset\":0},\"reference_ids\":{}}}]},\"identifiers\":{\"__main__.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"__main__.__default__\":{\"decorators\":[\"external\",\"raw_input\",\"raw_output\"],\"pc\":137,\"type\":\"function\"},\"__main__.__default__.Args\":{\"full_name\":\"__main__.__default__.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.__default__.ImplicitArgs\":{\"full_name\":\"__main__.__default__.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.__default__.Return\":{\"cairo_type\":\"(retdata_size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__main__.__default__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.__l1_default__\":{\"decorators\":[\"l1_handler\",\"raw_input\"],\"pc\":164,\"type\":\"function\"},\"__main__.__l1_default__.Args\":{\"full_name\":\"__main__.__l1_default__.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.__l1_default__.ImplicitArgs\":{\"full_name\":\"__main__.__l1_default__.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.__l1_default__.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.__l1_default__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__._get_implementation\":{\"destination\":\"contracts.upgrade.Upgradable._get_implementation\",\"type\":\"alias\"},\"__main__._set_implementation\":{\"destination\":\"contracts.upgrade.Upgradable._set_implementation\",\"type\":\"alias\"},\"__main__.constructor\":{\"decorators\":[\"constructor\"],\"pc\":91,\"type\":\"function\"},\"__main__.constructor.Args\":{\"full_name\":\"__main__.constructor.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2},\"implementation\":{\"cairo_type\":\"felt\",\"offset\":0},\"selector\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"__main__.constructor.ImplicitArgs\":{\"full_name\":\"__main__.constructor.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.constructor.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.constructor.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.get_implementation\":{\"decorators\":[\"view\"],\"pc\":197,\"type\":\"function\"},\"__main__.get_implementation.Args\":{\"full_name\":\"__main__.get_implementation.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.get_implementation.ImplicitArgs\":{\"full_name\":\"__main__.get_implementation.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.get_implementation.Return\":{\"cairo_type\":\"(implementation: felt)\",\"type\":\"type_definition\"},\"__main__.get_implementation.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.library_call\":{\"destination\":\"starkware.starknet.common.syscalls.library_call\",\"type\":\"alias\"},\"__main__.library_call_l1_handler\":{\"destination\":\"starkware.starknet.common.syscalls.library_call_l1_handler\",\"type\":\"alias\"},\"__wrappers__.__default__\":{\"decorators\":[\"external\",\"raw_input\",\"raw_output\"],\"pc\":155,\"type\":\"function\"},\"__wrappers__.__default__.Args\":{\"full_name\":\"__wrappers__.__default__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__default__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__default__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__default__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__default__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__default__.__wrapped_func\":{\"destination\":\"__main__.__default__\",\"type\":\"alias\"},\"__wrappers__.__default___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.__l1_default__\":{\"decorators\":[\"l1_handler\",\"raw_input\"],\"pc\":180,\"type\":\"function\"},\"__wrappers__.__l1_default__.Args\":{\"full_name\":\"__wrappers__.__l1_default__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__l1_default__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__l1_default__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__l1_default__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__l1_default__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__l1_default__.__wrapped_func\":{\"destination\":\"__main__.__l1_default__\",\"type\":\"alias\"},\"__wrappers__.__l1_default___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.constructor\":{\"decorators\":[\"constructor\"],\"pc\":108,\"type\":\"function\"},\"__wrappers__.constructor.Args\":{\"full_name\":\"__wrappers__.constructor.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.constructor.ImplicitArgs\":{\"full_name\":\"__wrappers__.constructor.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.constructor.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.constructor.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.constructor.__wrapped_func\":{\"destination\":\"__main__.constructor\",\"type\":\"alias\"},\"__wrappers__.constructor_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.get_implementation\":{\"decorators\":[\"view\"],\"pc\":212,\"type\":\"function\"},\"__wrappers__.get_implementation.Args\":{\"full_name\":\"__wrappers__.get_implementation.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.get_implementation.ImplicitArgs\":{\"full_name\":\"__wrappers__.get_implementation.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.get_implementation.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.get_implementation.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.get_implementation.__wrapped_func\":{\"destination\":\"__main__.get_implementation\",\"type\":\"alias\"},\"__wrappers__.get_implementation_encode_return\":{\"decorators\":[],\"pc\":203,\"type\":\"function\"},\"__wrappers__.get_implementation_encode_return.Args\":{\"full_name\":\"__wrappers__.get_implementation_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(implementation: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.get_implementation_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.get_implementation_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.get_implementation_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.get_implementation_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.get_implementation_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._get_implementation\":{\"decorators\":[],\"pc\":75,\"type\":\"function\"},\"contracts.upgrade.Upgradable._get_implementation.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._get_implementation.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._get_implementation.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._get_implementation.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._get_implementation.Return\":{\"cairo_type\":\"(implementation: felt)\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._get_implementation.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._implementation\":{\"type\":\"namespace\"},\"contracts.upgrade.Upgradable._implementation.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._implementation.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._implementation.addr\":{\"decorators\":[],\"pc\":45,\"type\":\"function\"},\"contracts.upgrade.Upgradable._implementation.addr.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.addr.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.addr.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.addr.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.addr.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._implementation.addr.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._implementation.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.normalize_address\":{\"destination\":\"starkware.starknet.common.storage.normalize_address\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.read\":{\"decorators\":[],\"pc\":50,\"type\":\"function\"},\"contracts.upgrade.Upgradable._implementation.read.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.read.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.read.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.read.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.read.Return\":{\"cairo_type\":\"(address: felt)\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._implementation.read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._implementation.storage_read\":{\"destination\":\"starkware.starknet.common.syscalls.storage_read\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.storage_write\":{\"destination\":\"starkware.starknet.common.syscalls.storage_write\",\"type\":\"alias\"},\"contracts.upgrade.Upgradable._implementation.write\":{\"decorators\":[],\"pc\":63,\"type\":\"function\"},\"contracts.upgrade.Upgradable._implementation.write.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.write.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.write.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._implementation.write.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._implementation.write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._implementation.write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable._set_implementation\":{\"decorators\":[],\"pc\":81,\"type\":\"function\"},\"contracts.upgrade.Upgradable._set_implementation.Args\":{\"full_name\":\"contracts.upgrade.Upgradable._set_implementation.Args\",\"members\":{\"implementation\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._set_implementation.ImplicitArgs\":{\"full_name\":\"contracts.upgrade.Upgradable._set_implementation.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"contracts.upgrade.Upgradable._set_implementation.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"contracts.upgrade.Upgradable._set_implementation.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"contracts.upgrade.Upgradable.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"starkware.cairo.common.bool.FALSE\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.bool.TRUE\":{\"type\":\"const\",\"value\":1},\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"x_and_y\":{\"cairo_type\":\"felt\",\"offset\":2},\"x_or_y\":{\"cairo_type\":\"felt\",\"offset\":4},\"x_xor_y\":{\"cairo_type\":\"felt\",\"offset\":3},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":5,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"members\":{\"m\":{\"cairo_type\":\"felt\",\"offset\":4},\"p\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":0},\"q\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":2},\"r\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.HashBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"members\":{\"result\":{\"cairo_type\":\"felt\",\"offset\":2},\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\",\"members\":{\"input\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":0},\"output\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":8}},\"size\":16,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltinState\":{\"destination\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":1},\"pub_key\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.dict_access.DictAccess\":{\"full_name\":\"starkware.cairo.common.dict_access.DictAccess\",\"members\":{\"key\":{\"cairo_type\":\"felt\",\"offset\":0},\"new_value\":{\"cairo_type\":\"felt\",\"offset\":2},\"prev_value\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.ec_point.EcPoint\":{\"full_name\":\"starkware.cairo.common.ec_point.EcPoint\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.hash.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.keccak_state.KeccakBuiltinState\":{\"full_name\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"members\":{\"s0\":{\"cairo_type\":\"felt\",\"offset\":0},\"s1\":{\"cairo_type\":\"felt\",\"offset\":1},\"s2\":{\"cairo_type\":\"felt\",\"offset\":2},\"s3\":{\"cairo_type\":\"felt\",\"offset\":3},\"s4\":{\"cairo_type\":\"felt\",\"offset\":4},\"s5\":{\"cairo_type\":\"felt\",\"offset\":5},\"s6\":{\"cairo_type\":\"felt\",\"offset\":6},\"s7\":{\"cairo_type\":\"felt\",\"offset\":7}},\"size\":8,\"type\":\"struct\"},\"starkware.cairo.common.math.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"starkware.cairo.common.math.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"starkware.cairo.common.math.assert_not_zero\":{\"decorators\":[],\"pc\":0,\"type\":\"function\"},\"starkware.cairo.common.math.assert_not_zero.Args\":{\"full_name\":\"starkware.cairo.common.math.assert_not_zero.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_not_zero.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.math.assert_not_zero.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_not_zero.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.math.assert_not_zero.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.math.assert_not_zero.value\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_not_zero.value\",\"references\":[{\"ap_tracking_data\":{\"group\":0,\"offset\":0},\"pc\":0,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.starknet.common.storage.ADDR_BOUND\":{\"type\":\"const\",\"value\":-1.0671072950157357e+59},\"starkware.starknet.common.storage.MAX_STORAGE_ITEM_SIZE\":{\"type\":\"const\",\"value\":256},\"starkware.starknet.common.storage.assert_250_bit\":{\"destination\":\"starkware.cairo.common.math.assert_250_bit\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.CALL_CONTRACT_SELECTOR\":{\"type\":\"const\",\"value\":2.0853273475220474e+28},\"starkware.starknet.common.syscalls.CallContract\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContract\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"members\":{\"retdata\":{\"cairo_type\":\"felt*\",\"offset\":1},\"retdata_size\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DELEGATE_CALL_SELECTOR\":{\"type\":\"const\",\"value\":2.1167594061783206e+28},\"starkware.starknet.common.syscalls.DELEGATE_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":2.3274015802972845e+40},\"starkware.starknet.common.syscalls.DEPLOY_SELECTOR\":{\"type\":\"const\",\"value\":75202468540281},\"starkware.starknet.common.syscalls.Deploy\":{\"full_name\":\"starkware.starknet.common.syscalls.Deploy\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployResponse\",\"offset\":6}},\"size\":9,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployRequest\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"constructor_calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"constructor_calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address_salt\":{\"cairo_type\":\"felt\",\"offset\":2},\"deploy_from_zero\":{\"cairo_type\":\"felt\",\"offset\":5},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":6,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployResponse\",\"members\":{\"constructor_retdata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"constructor_retdata_size\":{\"cairo_type\":\"felt\",\"offset\":1},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DictAccess\":{\"destination\":\"starkware.cairo.common.dict_access.DictAccess\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.EMIT_EVENT_SELECTOR\":{\"type\":\"const\",\"value\":1.2807093015503357e+21},\"starkware.starknet.common.syscalls.EmitEvent\":{\"full_name\":\"starkware.starknet.common.syscalls.EmitEvent\",\"members\":{\"data\":{\"cairo_type\":\"felt*\",\"offset\":4},\"data_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"keys\":{\"cairo_type\":\"felt*\",\"offset\":2},\"keys_len\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GET_BLOCK_NUMBER_SELECTOR\":{\"type\":\"const\",\"value\":1.448089106835523e+33},\"starkware.starknet.common.syscalls.GET_BLOCK_TIMESTAMP_SELECTOR\":{\"type\":\"const\",\"value\":2.4294903732626647e+40},\"starkware.starknet.common.syscalls.GET_CALLER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":9.490196778139308e+37},\"starkware.starknet.common.syscalls.GET_CONTRACT_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":6.219495360805491e+42},\"starkware.starknet.common.syscalls.GET_SEQUENCER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":1.5921908335819916e+45},\"starkware.starknet.common.syscalls.GET_TX_INFO_SELECTOR\":{\"type\":\"const\",\"value\":1.3170293902041122e+21},\"starkware.starknet.common.syscalls.GET_TX_SIGNATURE_SELECTOR\":{\"type\":\"const\",\"value\":1.44808912865234e+33},\"starkware.starknet.common.syscalls.GetBlockNumber\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumber\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"members\":{\"block_number\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestamp\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestamp\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"members\":{\"block_timestamp\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"members\":{\"caller_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"members\":{\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"members\":{\"sequencer_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfo\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"members\":{\"tx_info\":{\"cairo_type\":\"starkware.starknet.common.syscalls.TxInfo*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignature\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignature\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"members\":{\"signature\":{\"cairo_type\":\"felt*\",\"offset\":1},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LIBRARY_CALL_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":4.362334527541981e+47},\"starkware.starknet.common.syscalls.LIBRARY_CALL_SELECTOR\":{\"type\":\"const\",\"value\":9.2376026794327e+25},\"starkware.starknet.common.syscalls.LibraryCall\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCall\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LibraryCallRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.SEND_MESSAGE_TO_L1_SELECTOR\":{\"type\":\"const\",\"value\":4.3301790876830345e+35},\"starkware.starknet.common.syscalls.STORAGE_READ_SELECTOR\":{\"type\":\"const\",\"value\":1.0089069337060175e+26},\"starkware.starknet.common.syscalls.STORAGE_WRITE_SELECTOR\":{\"type\":\"const\",\"value\":2.582801750287405e+28},\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\":{\"full_name\":\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\",\"members\":{\"payload_ptr\":{\"cairo_type\":\"felt*\",\"offset\":3},\"payload_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"to_address\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageRead\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageRead\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageWrite\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageWrite\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"value\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.TxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.TxInfo\",\"members\":{\"account_contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"chain_id\":{\"cairo_type\":\"felt\",\"offset\":6},\"max_fee\":{\"cairo_type\":\"felt\",\"offset\":2},\"nonce\":{\"cairo_type\":\"felt\",\"offset\":7},\"signature\":{\"cairo_type\":\"felt*\",\"offset\":4},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"transaction_hash\":{\"cairo_type\":\"felt\",\"offset\":5},\"version\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":8,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.library_call\":{\"decorators\":[],\"pc\":5,\"type\":\"function\"},\"starkware.starknet.common.syscalls.library_call.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.library_call.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.library_call.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.library_call.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.library_call.Return\":{\"cairo_type\":\"(retdata_size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.library_call.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.library_call.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.library_call.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":1,\"offset\":0},\"pc\":5,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":1,\"offset\":1},\"pc\":12,\"value\":\"cast([fp + (-7)] + 7, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.library_call_l1_handler\":{\"decorators\":[],\"pc\":17,\"type\":\"function\"},\"starkware.starknet.common.syscalls.library_call_l1_handler.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.library_call_l1_handler.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.library_call_l1_handler.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.library_call_l1_handler.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.library_call_l1_handler.Return\":{\"cairo_type\":\"(retdata_size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.library_call_l1_handler.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.library_call_l1_handler.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.library_call_l1_handler.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":17,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":1},\"pc\":24,\"value\":\"cast([fp + (-7)] + 7, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.storage_read\":{\"decorators\":[],\"pc\":29,\"type\":\"function\"},\"starkware.starknet.common.syscalls.storage_read.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_read.Args\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_read.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_read.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_read.Return\":{\"cairo_type\":\"(value: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.storage_read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":29,\"value\":\"[cast(fp + (-4), felt**)]\"},{\"ap_tracking_data\":{\"group\":3,\"offset\":1},\"pc\":33,\"value\":\"cast([fp + (-4)] + 3, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.storage_write\":{\"decorators\":[],\"pc\":37,\"type\":\"function\"},\"starkware.starknet.common.syscalls.storage_write.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_write.Args\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":0},\"value\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_write.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_write.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.storage_write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":4,\"offset\":0},\"pc\":37,\"value\":\"[cast(fp + (-5), felt**)]\"},{\"ap_tracking_data\":{\"group\":4,\"offset\":1},\"pc\":42,\"value\":\"cast([fp + (-5)] + 3, felt*)\"}],\"type\":\"reference\"}},\"main_scope\":\"__main__\",\"prime\":\"0x800000000000011000000000000000000000000000000000000000000000001\",\"reference_manager\":{\"references\":[{\"ap_tracking_data\":{\"group\":0,\"offset\":0},\"pc\":0,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":1,\"offset\":0},\"pc\":5,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":17,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":29,\"value\":\"[cast(fp + (-4), felt**)]\"},{\"ap_tracking_data\":{\"group\":4,\"offset\":0},\"pc\":37,\"value\":\"[cast(fp + (-5), felt**)]\"}]}}}"
  },
  {
    "path": "contract-artifacts/ArgentAccount/780760e4156afe592bb1feff7e769cf279ae9831/Proxy.cairo/Proxy_abi.json",
    "content": "[{\"inputs\":[{\"name\":\"implementation\",\"type\":\"felt\"},{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"constructor\",\"outputs\":[],\"type\":\"constructor\"},{\"inputs\":[{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_size\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__default__\",\"outputs\":[{\"name\":\"retdata_size\",\"type\":\"felt\"},{\"name\":\"retdata\",\"type\":\"felt*\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_size\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__l1_default__\",\"outputs\":[],\"type\":\"l1_handler\"},{\"inputs\":[],\"name\":\"get_implementation\",\"outputs\":[{\"name\":\"implementation\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  },
  {
    "path": "contract-artifacts/OpenZeppelinAccount/0.5.1/Account.cairo/Account.json",
    "content": "{\"abi\":[{\"members\":[{\"name\":\"to\",\"offset\":0,\"type\":\"felt\"},{\"name\":\"selector\",\"offset\":1,\"type\":\"felt\"},{\"name\":\"data_offset\",\"offset\":2,\"type\":\"felt\"},{\"name\":\"data_len\",\"offset\":3,\"type\":\"felt\"}],\"name\":\"AccountCallArray\",\"size\":4,\"type\":\"struct\"},{\"inputs\":[{\"name\":\"publicKey\",\"type\":\"felt\"}],\"name\":\"constructor\",\"outputs\":[],\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getPublicKey\",\"outputs\":[{\"name\":\"publicKey\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"felt\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"newPublicKey\",\"type\":\"felt\"}],\"name\":\"setPublicKey\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"hash\",\"type\":\"felt\"},{\"name\":\"signature_len\",\"type\":\"felt\"},{\"name\":\"signature\",\"type\":\"felt*\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"name\":\"isValid\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"call_array_len\",\"type\":\"felt\"},{\"name\":\"call_array\",\"type\":\"AccountCallArray*\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__validate__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"class_hash\",\"type\":\"felt\"}],\"name\":\"__validate_declare__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"class_hash\",\"type\":\"felt\"},{\"name\":\"salt\",\"type\":\"felt\"},{\"name\":\"publicKey\",\"type\":\"felt\"}],\"name\":\"__validate_deploy__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"call_array_len\",\"type\":\"felt\"},{\"name\":\"call_array\",\"type\":\"AccountCallArray*\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__execute__\",\"outputs\":[{\"name\":\"response_len\",\"type\":\"felt\"},{\"name\":\"response\",\"type\":\"felt*\"}],\"type\":\"function\"}],\"entry_points_by_type\":{\"CONSTRUCTOR\":[{\"offset\":\"0x16e\",\"selector\":\"0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194\"}],\"EXTERNAL\":[{\"offset\":\"0x1cd\",\"selector\":\"0xbc0eb87884ab91e330445c3584a50d7ddf4b568f02fbeb456a6242cce3f5d9\"},{\"offset\":\"0x2bb\",\"selector\":\"0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad\"},{\"offset\":\"0x224\",\"selector\":\"0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775\"},{\"offset\":\"0x191\",\"selector\":\"0x1a6c6a0bdec86cc645c91997d8eea83e87148659e3e61122f72361fd5e94079\"},{\"offset\":\"0x1f4\",\"selector\":\"0x213dfe25e2ca309c4d615a09cfc95fdb2fc7dc73fbcad12c450fe93b1f2ff9e\"},{\"offset\":\"0x25f\",\"selector\":\"0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3\"},{\"offset\":\"0x1b2\",\"selector\":\"0x29e211664c0b63c79638fbea474206ca74016b3e9a3dc4f9ac300ffd8bdf2cd\"},{\"offset\":\"0x285\",\"selector\":\"0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895\"}],\"L1_HANDLER\":[]},\"program\":{\"attributes\":[{\"accessible_scopes\":[\"openzeppelin.account.library\",\"openzeppelin.account.library.Account\",\"openzeppelin.account.library.Account.assert_only_self\"],\"end_pc\":192,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":16,\"offset\":12},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":191,\"value\":\"Account: caller is not this account\"},{\"accessible_scopes\":[\"openzeppelin.account.library\",\"openzeppelin.account.library.Account\",\"openzeppelin.account.library.Account.execute\"],\"end_pc\":269,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":21,\"offset\":9},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":259,\"value\":\"Account: deprecated tx version\"},{\"accessible_scopes\":[\"openzeppelin.account.library\",\"openzeppelin.account.library.Account\",\"openzeppelin.account.library.Account.execute\"],\"end_pc\":274,\"flow_tracking_data\":{\"ap_tracking\":{\"group\":21,\"offset\":49},\"reference_ids\":{}},\"name\":\"error_message\",\"start_pc\":272,\"value\":\"Account: reentrant call\"}],\"builtins\":[\"pedersen\",\"range_check\",\"ecdsa\",\"bitwise\"],\"compiler_version\":\"0.10.2\",\"data\":[\"0x40780017fff7fff\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffd\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480080007fff8000\",\"0x400080007ffd7fff\",\"0x482480017ffd8001\",\"0x1\",\"0x482480017ffd8001\",\"0x1\",\"0xa0680017fff7ffe\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb\",\"0x402a7ffc7ffd7fff\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x484480017fff8000\",\"0x2aaaaaaaaaaaab05555555555555556\",\"0x48307fff7ffd8000\",\"0x480280027ffb8000\",\"0x480280037ffb8000\",\"0x484480017fff8000\",\"0x4000000000000088000000000000001\",\"0x48307fff7ffd8000\",\"0xa0680017fff8000\",\"0xe\",\"0x480680017fff8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x48287ffc80007fff\",\"0x40307ffc7ff87fff\",\"0x48297ffd80007ffc\",\"0x482680017ffd8000\",\"0x1\",\"0x48507fff7ffe8000\",\"0x40507ff97ff57fff\",\"0x482680017ffb8000\",\"0x4\",\"0x208b7fff7fff7ffe\",\"0xa0680017fff8000\",\"0xc\",\"0x480680017fff8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x48287ffd80007fff\",\"0x48327fff7ffc8000\",\"0x40307ffa7ff67fff\",\"0x48527ffe7ffc8000\",\"0x40507ff97ff57fff\",\"0x482680017ffb8000\",\"0x4\",\"0x208b7fff7fff7ffe\",\"0x40317ffd7ff97ffd\",\"0x48297ffc80007ffd\",\"0x48527fff7ffc8000\",\"0x40507ffb7ff77fff\",\"0x40780017fff7fff\",\"0x2\",\"0x482680017ffb8000\",\"0x4\",\"0x208b7fff7fff7ffe\",\"0x48297ffd80007ffc\",\"0x20680017fff7fff\",\"0x4\",\"0x402780017ffc7ffc\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcc\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x43616c6c436f6e7472616374\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x7\",\"0x480280057ff98000\",\"0x480280067ff98000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x47657443616c6c657241646472657373\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x476574436f6e747261637441646472657373\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f7261676552656164\",\"0x400280007ffc7fff\",\"0x400380017ffc7ffd\",\"0x482680017ffc8000\",\"0x3\",\"0x480280027ffc8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f726167655772697465\",\"0x400280007ffb7fff\",\"0x400380017ffb7ffc\",\"0x400380027ffb7ffd\",\"0x482680017ffb8000\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x4765745478496e666f\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x400380017ff97ffa\",\"0x400380007ff97ffb\",\"0x482680017ff98000\",\"0x2\",\"0x208b7fff7fff7ffe\",\"0xa0680017fff8000\",\"0xc\",\"0x40780017fff7fff\",\"0x6\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff8c\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffd7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb1\",\"0x480680017fff8000\",\"0x0\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x1379ac0624b939ceb9dede92211d7db5ee174fe28be72245b0a1a2abd81c98f\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc6\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc0\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x208b7fff7fff7ffe\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa4\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff9a\",\"0x40127fff7fff7ff9\",\"0x48127ffe7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd5\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffe00365a\",\"0x20680017fff7fff\",\"0x8\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffff59942a8c\",\"0x20680017fff7fff\",\"0x8\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd7\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbf\",\"0x208b7fff7fff7ffe\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffac\",\"0x480a7ff97fff8000\",\"0x480a7ffb7fff8000\",\"0x48127ffd7fff8000\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff87\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffd7fff8000\",\"0x48127ff37fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x480a7ff57fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff74\",\"0x480a7ff97fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480080007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7a\",\"0x480680017fff8000\",\"0x1\",\"0x40127fff7fff7ffe\",\"0x40137ffd7fff8000\",\"0x48127fdc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff49\",\"0x400680017fff7fff\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeef\",\"0x40137fff7fff8001\",\"0x48127ffb7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffd7fff8000\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x35\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee5\",\"0x40137fff7fff8002\",\"0x48127ffc7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a80017fff8000\",\"0x480a80027fff8000\",\"0x1104800180018000\",\"0xa\",\"0x48127ffe7fff8000\",\"0x480a7ff67fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a80007fff8000\",\"0x48127ffa7fff8000\",\"0x480a80027fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x20780017fff7ffb\",\"0x6\",\"0x480a7ffa7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480280007ffc8000\",\"0x480280017ffc8000\",\"0x480280027ffc8000\",\"0x480280037ffc8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff11\",\"0x40137ffe7fff8000\",\"0x40137fff7fff8001\",\"0x40137ffd7fff8002\",\"0x480a7ffd7fff8000\",\"0x480a80017fff8000\",\"0x480a80007fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec2\",\"0x480a80027fff8000\",\"0x482680017ffb8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x482680017ffc8000\",\"0x4\",\"0x482a80007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe4\",\"0x48127ffe7fff8000\",\"0x482880007ffe8000\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffa\",\"0x4\",\"0x480a7ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x400280007ffd7fff\",\"0x480280017ffb8000\",\"0x400280017ffd7fff\",\"0x480280037ffb8000\",\"0x400280027ffd7fff\",\"0x480280027ffb8000\",\"0x48327fff7ffc8000\",\"0x400280037ffd7fff\",\"0x480a7ff97fff8000\",\"0x482680017ffa8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x482680017ffb8000\",\"0x4\",\"0x480a7ffc7fff8000\",\"0x482680017ffd8000\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffec\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff48\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480280047ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff3e\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x480280047ffb8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff23\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffea\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x480280037ffb8000\",\"0x480280047ffb8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff19\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480280037ffb8000\",\"0x480280047ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff04\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280017ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x482480017ffc8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x482680017ffd8000\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdc\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe3\",\"0x48127ff37fff8000\",\"0x48127ff37fff8000\",\"0x48127ffb7fff8000\",\"0x48127ff27fff8000\",\"0x480280047ffb8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff67fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe61\",\"0x48127ffe7fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480080057ffb8000\",\"0x480080037ffa8000\",\"0x480080047ff98000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffecf\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x484480017fff8000\",\"0x4\",\"0x48307fff7ffd8000\",\"0x480280027ffb8000\",\"0x480080007ffe8000\",\"0x400080017ffe7fff\",\"0x482480017ffd8000\",\"0x1\",\"0x480080007ffc8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x482480017ffc8000\",\"0x2\",\"0x480280007ffd8000\",\"0x482680017ffd8000\",\"0x1\",\"0x480080007ff38000\",\"0x482480017ff28000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffa7fff8000\",\"0x480280047ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe26\",\"0x48127ffe7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480080057ffb8000\",\"0x480080037ffa8000\",\"0x480080047ff98000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe94\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe8\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffa7fff8000\",\"0x480280047ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff77fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe00\",\"0x48127ffe7fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480080057ffb8000\",\"0x480080037ffa8000\",\"0x480080047ff98000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe6e\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x3\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480280027ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe6\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffa7fff8000\",\"0x480280047ffb8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff57fff8000\",\"0x480a7ff67fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe5a\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x4003800080007ffb\",\"0x400380007ffd7ffb\",\"0x402780017ffd8001\",\"0x1\",\"0x4826800180008000\",\"0x1\",\"0x40297ffb7fff8002\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd4f\",\"0x480a80017fff8000\",\"0x4829800080008002\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x4\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x484480017fff8000\",\"0x4\",\"0x48307fff7ffd8000\",\"0x480280027ffb8000\",\"0x480080007ffe8000\",\"0x400080017ffe7fff\",\"0x482480017ffd8000\",\"0x1\",\"0x480080007ffc8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280037ffb8000\",\"0x480280047ffb8000\",\"0x482480017ffb8000\",\"0x2\",\"0x480280007ffd8000\",\"0x482680017ffd8000\",\"0x1\",\"0x480080007ff28000\",\"0x482480017ff18000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc2\",\"0x40137ff97fff8000\",\"0x40137ffa7fff8001\",\"0x40137ffb7fff8002\",\"0x40137ffc7fff8003\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc7\",\"0x480a80007fff8000\",\"0x480a80017fff8000\",\"0x48127ffb7fff8000\",\"0x480a80027fff8000\",\"0x480a80037fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x208b7fff7fff7ffe\"],\"hints\":{\"0\":[{\"accessible_scopes\":[\"starkware.cairo.common.alloc\",\"starkware.cairo.common.alloc.alloc\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":0,\"offset\":0},\"reference_ids\":{}}}],\"6\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"vm_enter_scope({'n': ids.len})\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":1,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.memcpy.memcpy.len\":0}}}],\"14\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"n -= 1\\nids.continue_copying = 1 if n > 0 else 0\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":1,\"offset\":5},\"reference_ids\":{\"starkware.cairo.common.memcpy.memcpy.continue_copying\":1}}}],\"17\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"vm_exit_scope()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":1,\"offset\":6},\"reference_ids\":{}}}],\"18\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_le_felt\"],\"code\":\"import itertools\\n\\nfrom starkware.cairo.common.math_utils import assert_integer\\nassert_integer(ids.a)\\nassert_integer(ids.b)\\na = ids.a % PRIME\\nb = ids.b % PRIME\\nassert a <= b, f'a = {a} is not less than or equal to b = {b}.'\\n\\n# Find an arc less than PRIME / 3, and another less than PRIME / 2.\\nlengths_and_indices = [(a, 0), (b - a, 1), (PRIME - 1 - b, 2)]\\nlengths_and_indices.sort()\\nassert lengths_and_indices[0][0] <= PRIME // 3 and lengths_and_indices[1][0] <= PRIME // 2\\nexcluded = lengths_and_indices[2][1]\\n\\nmemory[ids.range_check_ptr + 1], memory[ids.range_check_ptr + 0] = (\\n    divmod(lengths_and_indices[0][0], ids.PRIME_OVER_3_HIGH))\\nmemory[ids.range_check_ptr + 3], memory[ids.range_check_ptr + 2] = (\\n    divmod(lengths_and_indices[1][0], ids.PRIME_OVER_2_HIGH))\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.math.assert_le_felt.a\":2,\"starkware.cairo.common.math.assert_le_felt.b\":3,\"starkware.cairo.common.math.assert_le_felt.range_check_ptr\":4}}}],\"28\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_le_felt\"],\"code\":\"memory[ap] = 1 if excluded != 0 else 0\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":8},\"reference_ids\":{}}}],\"42\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_le_felt\"],\"code\":\"memory[ap] = 1 if excluded != 1 else 0\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":9},\"reference_ids\":{}}}],\"54\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_le_felt\"],\"code\":\"assert excluded == 2\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":10},\"reference_ids\":{}}}],\"63\":[{\"accessible_scopes\":[\"starkware.cairo.common.math\",\"starkware.cairo.common.math.assert_lt_felt\"],\"code\":\"from starkware.cairo.common.math_utils import assert_integer\\nassert_integer(ids.a)\\nassert_integer(ids.b)\\nassert (ids.a % PRIME) < (ids.b % PRIME), \\\\\\n    f'a = {ids.a % PRIME} is not less than b = {ids.b % PRIME}.'\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":3,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.math.assert_lt_felt.a\":5,\"starkware.cairo.common.math.assert_lt_felt.b\":6}}}],\"81\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.call_contract\"],\"code\":\"syscall_handler.call_contract(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":4,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.call_contract.syscall_ptr\":7}}}],\"89\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_caller_address\"],\"code\":\"syscall_handler.get_caller_address(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":5,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\":8}}}],\"96\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_contract_address\"],\"code\":\"syscall_handler.get_contract_address(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":6,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_contract_address.syscall_ptr\":9}}}],\"104\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.storage_read\"],\"code\":\"syscall_handler.storage_read(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":7,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\":10}}}],\"113\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.storage_write\"],\"code\":\"syscall_handler.storage_write(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":8,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\":11}}}],\"119\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_tx_info\"],\"code\":\"syscall_handler.get_tx_info(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":9,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_tx_info.syscall_ptr\":12}}}],\"123\":[{\"accessible_scopes\":[\"starkware.cairo.common.signature\",\"starkware.cairo.common.signature.verify_ecdsa_signature\"],\"code\":\"ecdsa_builtin.add_signature(ids.ecdsa_ptr.address_, (ids.signature_r, ids.signature_s))\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":10,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.signature.verify_ecdsa_signature.ecdsa_ptr\":15,\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_r\":13,\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_s\":14}}}],\"128\":[{\"accessible_scopes\":[\"starkware.cairo.common.math_cmp\",\"starkware.cairo.common.math_cmp.is_le_felt\"],\"code\":\"memory[ap] = 0 if (ids.a % PRIME) <= (ids.b % PRIME) else 1\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":11,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.math_cmp.is_le_felt.a\":16,\"starkware.cairo.common.math_cmp.is_le_felt.b\":17}}}],\"375\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.constructor\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":30,\"offset\":35},\"reference_ids\":{}}}],\"392\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.getPublicKey_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":32,\"offset\":0},\"reference_ids\":{}}}],\"425\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.supportsInterface_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":36,\"offset\":0},\"reference_ids\":{}}}],\"470\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.setPublicKey\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":40,\"offset\":50},\"reference_ids\":{}}}],\"491\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.isValidSignature_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":42,\"offset\":0},\"reference_ids\":{}}}],\"579\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__validate__\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":45,\"offset\":77},\"reference_ids\":{}}}],\"617\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__validate_declare__\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":47,\"offset\":63},\"reference_ids\":{}}}],\"657\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__validate_deploy__\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":49,\"offset\":65},\"reference_ids\":{}}}],\"680\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.__execute___encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":52,\"offset\":0},\"reference_ids\":{}}}]},\"identifiers\":{\"__main__.Account\":{\"destination\":\"openzeppelin.account.library.Account\",\"type\":\"alias\"},\"__main__.AccountCallArray\":{\"destination\":\"openzeppelin.account.library.AccountCallArray\",\"type\":\"alias\"},\"__main__.BitwiseBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"type\":\"alias\"},\"__main__.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"__main__.SignatureBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"type\":\"alias\"},\"__main__.__execute__\":{\"decorators\":[\"external\"],\"pc\":668,\"type\":\"function\"},\"__main__.__execute__.Args\":{\"full_name\":\"__main__.__execute__.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"openzeppelin.account.library.AccountCallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"__main__.__execute__.ImplicitArgs\":{\"full_name\":\"__main__.__execute__.ImplicitArgs\",\"members\":{\"bitwise_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin*\",\"offset\":3},\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":4},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"__main__.__execute__.Return\":{\"cairo_type\":\"(response_len: felt, response: felt*)\",\"type\":\"type_definition\"},\"__main__.__execute__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.__validate__\":{\"decorators\":[\"external\"],\"pc\":531,\"type\":\"function\"},\"__main__.__validate__.Args\":{\"full_name\":\"__main__.__validate__.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"openzeppelin.account.library.AccountCallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate__.ImplicitArgs\":{\"full_name\":\"__main__.__validate__.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate__.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.__validate__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.__validate_declare__\":{\"decorators\":[\"external\"],\"pc\":590,\"type\":\"function\"},\"__main__.__validate_declare__.Args\":{\"full_name\":\"__main__.__validate_declare__.Args\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.__validate_declare__.ImplicitArgs\":{\"full_name\":\"__main__.__validate_declare__.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate_declare__.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.__validate_declare__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.__validate_deploy__\":{\"decorators\":[\"external\"],\"pc\":628,\"type\":\"function\"},\"__main__.__validate_deploy__.Args\":{\"full_name\":\"__main__.__validate_deploy__.Args\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"publicKey\":{\"cairo_type\":\"felt\",\"offset\":2},\"salt\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"__main__.__validate_deploy__.ImplicitArgs\":{\"full_name\":\"__main__.__validate_deploy__.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.__validate_deploy__.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.__validate_deploy__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.constructor\":{\"decorators\":[\"constructor\"],\"pc\":359,\"type\":\"function\"},\"__main__.constructor.Args\":{\"full_name\":\"__main__.constructor.Args\",\"members\":{\"publicKey\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.constructor.ImplicitArgs\":{\"full_name\":\"__main__.constructor.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.constructor.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.constructor.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.getPublicKey\":{\"decorators\":[\"view\"],\"pc\":386,\"type\":\"function\"},\"__main__.getPublicKey.Args\":{\"full_name\":\"__main__.getPublicKey.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.getPublicKey.ImplicitArgs\":{\"full_name\":\"__main__.getPublicKey.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.getPublicKey.Return\":{\"cairo_type\":\"(publicKey: felt)\",\"type\":\"type_definition\"},\"__main__.getPublicKey.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.get_tx_info\":{\"destination\":\"starkware.starknet.common.syscalls.get_tx_info\",\"type\":\"alias\"},\"__main__.isValidSignature\":{\"decorators\":[\"view\"],\"pc\":481,\"type\":\"function\"},\"__main__.isValidSignature.Args\":{\"full_name\":\"__main__.isValidSignature.Args\",\"members\":{\"hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"signature\":{\"cairo_type\":\"felt*\",\"offset\":2},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"__main__.isValidSignature.ImplicitArgs\":{\"full_name\":\"__main__.isValidSignature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"__main__.isValidSignature.Return\":{\"cairo_type\":\"(isValid: felt)\",\"type\":\"type_definition\"},\"__main__.isValidSignature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.setPublicKey\":{\"decorators\":[\"external\"],\"pc\":454,\"type\":\"function\"},\"__main__.setPublicKey.Args\":{\"full_name\":\"__main__.setPublicKey.Args\",\"members\":{\"newPublicKey\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.setPublicKey.ImplicitArgs\":{\"full_name\":\"__main__.setPublicKey.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.setPublicKey.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.setPublicKey.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.supportsInterface\":{\"decorators\":[\"view\"],\"pc\":418,\"type\":\"function\"},\"__main__.supportsInterface.Args\":{\"full_name\":\"__main__.supportsInterface.Args\",\"members\":{\"interfaceId\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"__main__.supportsInterface.ImplicitArgs\":{\"full_name\":\"__main__.supportsInterface.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.supportsInterface.Return\":{\"cairo_type\":\"(success: felt)\",\"type\":\"type_definition\"},\"__main__.supportsInterface.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__execute__\":{\"decorators\":[\"external\"],\"pc\":699,\"type\":\"function\"},\"__wrappers__.__execute__.Args\":{\"full_name\":\"__wrappers__.__execute__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__execute__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__execute__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__execute__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, bitwise_ptr: starkware.cairo.common.cairo_builtins.BitwiseBuiltin*, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__execute__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":4},\"__wrappers__.__execute__.__wrapped_func\":{\"destination\":\"__main__.__execute__\",\"type\":\"alias\"},\"__wrappers__.__execute___encode_return\":{\"decorators\":[],\"pc\":680,\"type\":\"function\"},\"__wrappers__.__execute___encode_return.Args\":{\"full_name\":\"__wrappers__.__execute___encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"ret_value\":{\"cairo_type\":\"(response_len: felt, response: felt*)\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__wrappers__.__execute___encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.__execute___encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__execute___encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__execute___encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":3},\"__wrappers__.__execute___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.__validate__\":{\"decorators\":[\"external\"],\"pc\":548,\"type\":\"function\"},\"__wrappers__.__validate__.Args\":{\"full_name\":\"__wrappers__.__validate__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__validate__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__validate__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__validate__.__wrapped_func\":{\"destination\":\"__main__.__validate__\",\"type\":\"alias\"},\"__wrappers__.__validate___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.__validate_declare__\":{\"decorators\":[\"external\"],\"pc\":607,\"type\":\"function\"},\"__wrappers__.__validate_declare__.Args\":{\"full_name\":\"__wrappers__.__validate_declare__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_declare__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__validate_declare__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_declare__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__validate_declare__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__validate_declare__.__wrapped_func\":{\"destination\":\"__main__.__validate_declare__\",\"type\":\"alias\"},\"__wrappers__.__validate_declare___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.__validate_deploy__\":{\"decorators\":[\"external\"],\"pc\":645,\"type\":\"function\"},\"__wrappers__.__validate_deploy__.Args\":{\"full_name\":\"__wrappers__.__validate_deploy__.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_deploy__.ImplicitArgs\":{\"full_name\":\"__wrappers__.__validate_deploy__.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.__validate_deploy__.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.__validate_deploy__.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.__validate_deploy__.__wrapped_func\":{\"destination\":\"__main__.__validate_deploy__\",\"type\":\"alias\"},\"__wrappers__.__validate_deploy___encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.constructor\":{\"decorators\":[\"constructor\"],\"pc\":366,\"type\":\"function\"},\"__wrappers__.constructor.Args\":{\"full_name\":\"__wrappers__.constructor.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.constructor.ImplicitArgs\":{\"full_name\":\"__wrappers__.constructor.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.constructor.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.constructor.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.constructor.__wrapped_func\":{\"destination\":\"__main__.constructor\",\"type\":\"alias\"},\"__wrappers__.constructor_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.getPublicKey\":{\"decorators\":[\"view\"],\"pc\":401,\"type\":\"function\"},\"__wrappers__.getPublicKey.Args\":{\"full_name\":\"__wrappers__.getPublicKey.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getPublicKey.ImplicitArgs\":{\"full_name\":\"__wrappers__.getPublicKey.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getPublicKey.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getPublicKey.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.getPublicKey.__wrapped_func\":{\"destination\":\"__main__.getPublicKey\",\"type\":\"alias\"},\"__wrappers__.getPublicKey_encode_return\":{\"decorators\":[],\"pc\":392,\"type\":\"function\"},\"__wrappers__.getPublicKey_encode_return.Args\":{\"full_name\":\"__wrappers__.getPublicKey_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(publicKey: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.getPublicKey_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.getPublicKey_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.getPublicKey_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.getPublicKey_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.getPublicKey_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.isValidSignature\":{\"decorators\":[\"view\"],\"pc\":500,\"type\":\"function\"},\"__wrappers__.isValidSignature.Args\":{\"full_name\":\"__wrappers__.isValidSignature.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.isValidSignature.ImplicitArgs\":{\"full_name\":\"__wrappers__.isValidSignature.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.isValidSignature.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: starkware.cairo.common.cairo_builtins.SignatureBuiltin*, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.isValidSignature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.isValidSignature.__wrapped_func\":{\"destination\":\"__main__.isValidSignature\",\"type\":\"alias\"},\"__wrappers__.isValidSignature_encode_return\":{\"decorators\":[],\"pc\":491,\"type\":\"function\"},\"__wrappers__.isValidSignature_encode_return.Args\":{\"full_name\":\"__wrappers__.isValidSignature_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(isValid: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.isValidSignature_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.isValidSignature_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.isValidSignature_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.isValidSignature_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.isValidSignature_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.setPublicKey\":{\"decorators\":[\"external\"],\"pc\":461,\"type\":\"function\"},\"__wrappers__.setPublicKey.Args\":{\"full_name\":\"__wrappers__.setPublicKey.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.setPublicKey.ImplicitArgs\":{\"full_name\":\"__wrappers__.setPublicKey.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.setPublicKey.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.setPublicKey.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.setPublicKey.__wrapped_func\":{\"destination\":\"__main__.setPublicKey\",\"type\":\"alias\"},\"__wrappers__.setPublicKey_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__wrappers__.supportsInterface\":{\"decorators\":[\"view\"],\"pc\":434,\"type\":\"function\"},\"__wrappers__.supportsInterface.Args\":{\"full_name\":\"__wrappers__.supportsInterface.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.supportsInterface.ImplicitArgs\":{\"full_name\":\"__wrappers__.supportsInterface.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.supportsInterface.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, ecdsa_ptr: felt, bitwise_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.supportsInterface.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.supportsInterface.__wrapped_func\":{\"destination\":\"__main__.supportsInterface\",\"type\":\"alias\"},\"__wrappers__.supportsInterface_encode_return\":{\"decorators\":[],\"pc\":425,\"type\":\"function\"},\"__wrappers__.supportsInterface_encode_return.Args\":{\"full_name\":\"__wrappers__.supportsInterface_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(success: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.supportsInterface_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.supportsInterface_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.supportsInterface_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.supportsInterface_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.supportsInterface_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"openzeppelin.account.library.Account\":{\"type\":\"namespace\"},\"openzeppelin.account.library.Account.Args\":{\"full_name\":\"openzeppelin.account.library.Account.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account._execute_list\":{\"decorators\":[],\"pc\":301,\"type\":\"function\"},\"openzeppelin.account.library.Account._execute_list.Args\":{\"full_name\":\"openzeppelin.account.library.Account._execute_list.Args\",\"members\":{\"calls\":{\"cairo_type\":\"openzeppelin.account.library.Call*\",\"offset\":1},\"calls_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"response\":{\"cairo_type\":\"felt*\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account._execute_list.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account._execute_list.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"openzeppelin.account.library.Account._execute_list.Return\":{\"cairo_type\":\"(response_len: felt)\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account._execute_list.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":3},\"openzeppelin.account.library.Account._from_call_array_to_call\":{\"decorators\":[],\"pc\":335,\"type\":\"function\"},\"openzeppelin.account.library.Account._from_call_array_to_call.Args\":{\"full_name\":\"openzeppelin.account.library.Account._from_call_array_to_call.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"openzeppelin.account.library.AccountCallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"calls\":{\"cairo_type\":\"openzeppelin.account.library.Call*\",\"offset\":3}},\"size\":4,\"type\":\"struct\"},\"openzeppelin.account.library.Account._from_call_array_to_call.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account._from_call_array_to_call.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"openzeppelin.account.library.Account._from_call_array_to_call.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account._from_call_array_to_call.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account.assert_only_self\":{\"decorators\":[],\"pc\":185,\"type\":\"function\"},\"openzeppelin.account.library.Account.assert_only_self.Args\":{\"full_name\":\"openzeppelin.account.library.Account.assert_only_self.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account.assert_only_self.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.assert_only_self.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"openzeppelin.account.library.Account.assert_only_self.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.assert_only_self.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account.execute\":{\"decorators\":[],\"pc\":254,\"type\":\"function\"},\"openzeppelin.account.library.Account.execute.Args\":{\"full_name\":\"openzeppelin.account.library.Account.execute.Args\",\"members\":{\"call_array\":{\"cairo_type\":\"openzeppelin.account.library.AccountCallArray*\",\"offset\":1},\"call_array_len\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":4,\"type\":\"struct\"},\"openzeppelin.account.library.Account.execute.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.execute.ImplicitArgs\",\"members\":{\"bitwise_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin*\",\"offset\":3},\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":4},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"openzeppelin.account.library.Account.execute.Return\":{\"cairo_type\":\"(response_len: felt, response: felt*)\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.execute.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":3},\"openzeppelin.account.library.Account.get_public_key\":{\"decorators\":[],\"pc\":194,\"type\":\"function\"},\"openzeppelin.account.library.Account.get_public_key.Args\":{\"full_name\":\"openzeppelin.account.library.Account.get_public_key.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account.get_public_key.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.get_public_key.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account.get_public_key.Return\":{\"cairo_type\":\"(public_key: felt)\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.get_public_key.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account.initializer\":{\"decorators\":[],\"pc\":178,\"type\":\"function\"},\"openzeppelin.account.library.Account.initializer.Args\":{\"full_name\":\"openzeppelin.account.library.Account.initializer.Args\",\"members\":{\"_public_key\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"openzeppelin.account.library.Account.initializer.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.initializer.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account.initializer.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.initializer.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account.is_valid_signature\":{\"decorators\":[],\"pc\":235,\"type\":\"function\"},\"openzeppelin.account.library.Account.is_valid_signature.Args\":{\"full_name\":\"openzeppelin.account.library.Account.is_valid_signature.Args\",\"members\":{\"hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"signature\":{\"cairo_type\":\"felt*\",\"offset\":2},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account.is_valid_signature.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.is_valid_signature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":2},\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":3},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"openzeppelin.account.library.Account.is_valid_signature.Return\":{\"cairo_type\":\"(is_valid: felt)\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.is_valid_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account.set_public_key\":{\"decorators\":[],\"pc\":226,\"type\":\"function\"},\"openzeppelin.account.library.Account.set_public_key.Args\":{\"full_name\":\"openzeppelin.account.library.Account.set_public_key.Args\",\"members\":{\"new_public_key\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"openzeppelin.account.library.Account.set_public_key.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.set_public_key.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account.set_public_key.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.set_public_key.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account.supports_interface\":{\"decorators\":[],\"pc\":200,\"type\":\"function\"},\"openzeppelin.account.library.Account.supports_interface.Args\":{\"full_name\":\"openzeppelin.account.library.Account.supports_interface.Args\",\"members\":{\"interface_id\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"openzeppelin.account.library.Account.supports_interface.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account.supports_interface.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account.supports_interface.Return\":{\"cairo_type\":\"(success: felt)\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account.supports_interface.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.AccountCallArray\":{\"full_name\":\"openzeppelin.account.library.AccountCallArray\",\"members\":{\"data_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"data_offset\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":1},\"to\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key\":{\"type\":\"namespace\"},\"openzeppelin.account.library.Account_public_key.Args\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"openzeppelin.account.library.Account_public_key.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account_public_key.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account_public_key.addr\":{\"decorators\":[],\"pc\":148,\"type\":\"function\"},\"openzeppelin.account.library.Account_public_key.addr.Args\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.addr.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.addr.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.addr.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.addr.Return\":{\"cairo_type\":\"(res: felt)\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account_public_key.addr.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account_public_key.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"openzeppelin.account.library.Account_public_key.normalize_address\":{\"destination\":\"starkware.starknet.common.storage.normalize_address\",\"type\":\"alias\"},\"openzeppelin.account.library.Account_public_key.read\":{\"decorators\":[],\"pc\":153,\"type\":\"function\"},\"openzeppelin.account.library.Account_public_key.read.Args\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.read.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.read.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.read.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.read.Return\":{\"cairo_type\":\"(public_key: felt)\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account_public_key.read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.Account_public_key.storage_read\":{\"destination\":\"starkware.starknet.common.syscalls.storage_read\",\"type\":\"alias\"},\"openzeppelin.account.library.Account_public_key.storage_write\":{\"destination\":\"starkware.starknet.common.syscalls.storage_write\",\"type\":\"alias\"},\"openzeppelin.account.library.Account_public_key.write\":{\"decorators\":[],\"pc\":166,\"type\":\"function\"},\"openzeppelin.account.library.Account_public_key.write.Args\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.write.Args\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.write.ImplicitArgs\":{\"full_name\":\"openzeppelin.account.library.Account_public_key.write.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"openzeppelin.account.library.Account_public_key.write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"openzeppelin.account.library.Account_public_key.write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"openzeppelin.account.library.BitwiseBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"type\":\"alias\"},\"openzeppelin.account.library.Call\":{\"full_name\":\"openzeppelin.account.library.Call\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":1},\"to\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"openzeppelin.account.library.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"openzeppelin.account.library.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"openzeppelin.account.library.IACCOUNT_ID\":{\"destination\":\"openzeppelin.utils.constants.library.IACCOUNT_ID\",\"type\":\"alias\"},\"openzeppelin.account.library.IERC165_ID\":{\"destination\":\"openzeppelin.utils.constants.library.IERC165_ID\",\"type\":\"alias\"},\"openzeppelin.account.library.SignatureBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"type\":\"alias\"},\"openzeppelin.account.library.TRANSACTION_VERSION\":{\"destination\":\"openzeppelin.utils.constants.library.TRANSACTION_VERSION\",\"type\":\"alias\"},\"openzeppelin.account.library.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"openzeppelin.account.library.Uint256\":{\"destination\":\"starkware.cairo.common.uint256.Uint256\",\"type\":\"alias\"},\"openzeppelin.account.library.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"openzeppelin.account.library.call_contract\":{\"destination\":\"starkware.starknet.common.syscalls.call_contract\",\"type\":\"alias\"},\"openzeppelin.account.library.get_caller_address\":{\"destination\":\"starkware.starknet.common.syscalls.get_caller_address\",\"type\":\"alias\"},\"openzeppelin.account.library.get_contract_address\":{\"destination\":\"starkware.starknet.common.syscalls.get_contract_address\",\"type\":\"alias\"},\"openzeppelin.account.library.get_fp_and_pc\":{\"destination\":\"starkware.cairo.common.registers.get_fp_and_pc\",\"type\":\"alias\"},\"openzeppelin.account.library.get_tx_info\":{\"destination\":\"starkware.starknet.common.syscalls.get_tx_info\",\"type\":\"alias\"},\"openzeppelin.account.library.is_le_felt\":{\"destination\":\"starkware.cairo.common.math_cmp.is_le_felt\",\"type\":\"alias\"},\"openzeppelin.account.library.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"openzeppelin.account.library.split_felt\":{\"destination\":\"starkware.cairo.common.math.split_felt\",\"type\":\"alias\"},\"openzeppelin.account.library.verify_ecdsa_signature\":{\"destination\":\"starkware.cairo.common.signature.verify_ecdsa_signature\",\"type\":\"alias\"},\"openzeppelin.account.library.verify_eth_signature_uint256\":{\"destination\":\"starkware.cairo.common.cairo_secp.signature.verify_eth_signature_uint256\",\"type\":\"alias\"},\"openzeppelin.utils.constants.library.DEFAULT_ADMIN_ROLE\":{\"type\":\"const\",\"value\":0},\"openzeppelin.utils.constants.library.IACCESSCONTROL_ID\":{\"type\":\"const\",\"value\":2036718347},\"openzeppelin.utils.constants.library.IACCOUNT_ID\":{\"type\":\"const\",\"value\":2792084853},\"openzeppelin.utils.constants.library.IERC165_ID\":{\"type\":\"const\",\"value\":33540519},\"openzeppelin.utils.constants.library.IERC721_ENUMERABLE_ID\":{\"type\":\"const\",\"value\":2014223715},\"openzeppelin.utils.constants.library.IERC721_ID\":{\"type\":\"const\",\"value\":2158778573},\"openzeppelin.utils.constants.library.IERC721_METADATA_ID\":{\"type\":\"const\",\"value\":1532892063},\"openzeppelin.utils.constants.library.IERC721_RECEIVER_ID\":{\"type\":\"const\",\"value\":353073666},\"openzeppelin.utils.constants.library.INVALID_ID\":{\"type\":\"const\",\"value\":4294967295},\"openzeppelin.utils.constants.library.TRANSACTION_VERSION\":{\"type\":\"const\",\"value\":1},\"openzeppelin.utils.constants.library.UINT8_MAX\":{\"type\":\"const\",\"value\":255},\"starkware.cairo.common.alloc.alloc\":{\"decorators\":[],\"pc\":0,\"type\":\"function\"},\"starkware.cairo.common.alloc.alloc.Args\":{\"full_name\":\"starkware.cairo.common.alloc.alloc.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.alloc.alloc.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.alloc.alloc.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.alloc.alloc.Return\":{\"cairo_type\":\"(ptr: felt*)\",\"type\":\"type_definition\"},\"starkware.cairo.common.alloc.alloc.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.bitwise.ALL_ONES\":{\"type\":\"const\",\"value\":-106710729501573572985208420194530329073740042555888586719234},\"starkware.cairo.common.bitwise.BitwiseBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.bool.FALSE\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.bool.TRUE\":{\"type\":\"const\",\"value\":1},\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"x_and_y\":{\"cairo_type\":\"felt\",\"offset\":2},\"x_or_y\":{\"cairo_type\":\"felt\",\"offset\":4},\"x_xor_y\":{\"cairo_type\":\"felt\",\"offset\":3},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":5,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"members\":{\"m\":{\"cairo_type\":\"felt\",\"offset\":4},\"p\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":0},\"q\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":2},\"r\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.HashBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"members\":{\"result\":{\"cairo_type\":\"felt\",\"offset\":2},\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\",\"members\":{\"input\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":0},\"output\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":8}},\"size\":16,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltinState\":{\"destination\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":1},\"pub_key\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.cairo_keccak.keccak.BLOCK_SIZE\":{\"destination\":\"starkware.cairo.common.cairo_keccak.packed_keccak.BLOCK_SIZE\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.BYTES_IN_WORD\":{\"type\":\"const\",\"value\":8},\"starkware.cairo.common.cairo_keccak.keccak.BitwiseBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.KECCAK_CAPACITY_IN_WORDS\":{\"type\":\"const\",\"value\":8},\"starkware.cairo.common.cairo_keccak.keccak.KECCAK_FULL_RATE_IN_BYTES\":{\"type\":\"const\",\"value\":136},\"starkware.cairo.common.cairo_keccak.keccak.KECCAK_FULL_RATE_IN_WORDS\":{\"type\":\"const\",\"value\":17},\"starkware.cairo.common.cairo_keccak.keccak.KECCAK_STATE_SIZE_FELTS\":{\"type\":\"const\",\"value\":25},\"starkware.cairo.common.cairo_keccak.keccak.Uint256\":{\"destination\":\"starkware.cairo.common.uint256.Uint256\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.assert_lt\":{\"destination\":\"starkware.cairo.common.math.assert_lt\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.assert_nn\":{\"destination\":\"starkware.cairo.common.math.assert_nn\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.assert_nn_le\":{\"destination\":\"starkware.cairo.common.math.assert_nn_le\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.bitwise_and\":{\"destination\":\"starkware.cairo.common.bitwise.bitwise_and\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.bitwise_or\":{\"destination\":\"starkware.cairo.common.bitwise.bitwise_or\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.bitwise_xor\":{\"destination\":\"starkware.cairo.common.bitwise.bitwise_xor\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.memset\":{\"destination\":\"starkware.cairo.common.memset.memset\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.packed_keccak_func\":{\"destination\":\"starkware.cairo.common.cairo_keccak.packed_keccak.packed_keccak_func\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.pow\":{\"destination\":\"starkware.cairo.common.pow.pow\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.split_felt\":{\"destination\":\"starkware.cairo.common.math.split_felt\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.uint256_reverse_endian\":{\"destination\":\"starkware.cairo.common.uint256.uint256_reverse_endian\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.keccak.unsigned_div_rem\":{\"destination\":\"starkware.cairo.common.math.unsigned_div_rem\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.packed_keccak.ALL_ONES\":{\"type\":\"const\",\"value\":-106710729501573572985208420194530329073740042555888586719234},\"starkware.cairo.common.cairo_keccak.packed_keccak.BLOCK_SIZE\":{\"type\":\"const\",\"value\":3},\"starkware.cairo.common.cairo_keccak.packed_keccak.BitwiseBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.packed_keccak.SHIFTS\":{\"type\":\"const\",\"value\":340282366920938463481821351505477763073},\"starkware.cairo.common.cairo_keccak.packed_keccak.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_keccak.packed_keccak.get_fp_and_pc\":{\"destination\":\"starkware.cairo.common.registers.get_fp_and_pc\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.bigint.BASE\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.BASE\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.bigint.BigInt3\":{\"full_name\":\"starkware.cairo.common.cairo_secp.bigint.BigInt3\",\"members\":{\"d0\":{\"cairo_type\":\"felt\",\"offset\":0},\"d1\":{\"cairo_type\":\"felt\",\"offset\":1},\"d2\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.cairo_secp.bigint.RC_BOUND\":{\"destination\":\"starkware.cairo.common.math_cmp.RC_BOUND\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.bigint.Uint256\":{\"destination\":\"starkware.cairo.common.uint256.Uint256\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.bigint.UnreducedBigInt3\":{\"full_name\":\"starkware.cairo.common.cairo_secp.bigint.UnreducedBigInt3\",\"members\":{\"d0\":{\"cairo_type\":\"felt\",\"offset\":0},\"d1\":{\"cairo_type\":\"felt\",\"offset\":1},\"d2\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.cairo_secp.bigint.UnreducedBigInt5\":{\"full_name\":\"starkware.cairo.common.cairo_secp.bigint.UnreducedBigInt5\",\"members\":{\"d0\":{\"cairo_type\":\"felt\",\"offset\":0},\"d1\":{\"cairo_type\":\"felt\",\"offset\":1},\"d2\":{\"cairo_type\":\"felt\",\"offset\":2},\"d3\":{\"cairo_type\":\"felt\",\"offset\":3},\"d4\":{\"cairo_type\":\"felt\",\"offset\":4}},\"size\":5,\"type\":\"struct\"},\"starkware.cairo.common.cairo_secp.bigint.assert_nn\":{\"destination\":\"starkware.cairo.common.math.assert_nn\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.bigint.assert_nn_le\":{\"destination\":\"starkware.cairo.common.math.assert_nn_le\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.bigint.unsigned_div_rem\":{\"destination\":\"starkware.cairo.common.math.unsigned_div_rem\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.constants.BASE\":{\"type\":\"const\",\"value\":77371252455336267181195264},\"starkware.cairo.common.cairo_secp.constants.BETA\":{\"type\":\"const\",\"value\":7},\"starkware.cairo.common.cairo_secp.constants.N0\":{\"type\":\"const\",\"value\":10428087374290690730508609},\"starkware.cairo.common.cairo_secp.constants.N1\":{\"type\":\"const\",\"value\":77371252455330678278691517},\"starkware.cairo.common.cairo_secp.constants.N2\":{\"type\":\"const\",\"value\":19342813113834066795298815},\"starkware.cairo.common.cairo_secp.constants.P0\":{\"type\":\"const\",\"value\":77371252455336262886226991},\"starkware.cairo.common.cairo_secp.constants.P1\":{\"type\":\"const\",\"value\":77371252455336267181195263},\"starkware.cairo.common.cairo_secp.constants.P2\":{\"type\":\"const\",\"value\":19342813113834066795298815},\"starkware.cairo.common.cairo_secp.constants.SECP_REM\":{\"type\":\"const\",\"value\":4294968273},\"starkware.cairo.common.cairo_secp.ec.BigInt3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.BigInt3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.ec.EcPoint\":{\"full_name\":\"starkware.cairo.common.cairo_secp.ec.EcPoint\",\"members\":{\"x\":{\"cairo_type\":\"starkware.cairo.common.cairo_secp.bigint.BigInt3\",\"offset\":0},\"y\":{\"cairo_type\":\"starkware.cairo.common.cairo_secp.bigint.BigInt3\",\"offset\":3}},\"size\":6,\"type\":\"struct\"},\"starkware.cairo.common.cairo_secp.ec.UnreducedBigInt3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.UnreducedBigInt3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.ec.is_zero\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.is_zero\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.ec.nondet_bigint3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.nondet_bigint3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.ec.unreduced_mul\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.unreduced_mul\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.ec.unreduced_sqr\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.unreduced_sqr\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.ec.verify_zero\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.verify_zero\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.BASE\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.BASE\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.BigInt3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.BigInt3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.P0\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.P0\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.P1\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.P1\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.P2\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.P2\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.SECP_REM\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.SECP_REM\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.UnreducedBigInt3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.UnreducedBigInt3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.assert_nn_le\":{\"destination\":\"starkware.cairo.common.math.assert_nn_le\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.field.nondet_bigint3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.nondet_bigint3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.BASE\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.BASE\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.BETA\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.BETA\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.BigInt3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.BigInt3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.BitwiseBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.EcPoint\":{\"destination\":\"starkware.cairo.common.cairo_secp.ec.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.N0\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.N0\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.N1\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.N1\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.N2\":{\"destination\":\"starkware.cairo.common.cairo_secp.constants.N2\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.RC_BOUND\":{\"destination\":\"starkware.cairo.common.math_cmp.RC_BOUND\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.Uint256\":{\"destination\":\"starkware.cairo.common.uint256.Uint256\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.UnreducedBigInt3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.UnreducedBigInt3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.assert_nn\":{\"destination\":\"starkware.cairo.common.math.assert_nn\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.assert_nn_le\":{\"destination\":\"starkware.cairo.common.math.assert_nn_le\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.bigint_mul\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.bigint_mul\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.bigint_to_uint256\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.bigint_to_uint256\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.ec_add\":{\"destination\":\"starkware.cairo.common.cairo_secp.ec.ec_add\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.ec_mul\":{\"destination\":\"starkware.cairo.common.cairo_secp.ec.ec_mul\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.ec_negate\":{\"destination\":\"starkware.cairo.common.cairo_secp.ec.ec_negate\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.finalize_keccak\":{\"destination\":\"starkware.cairo.common.cairo_keccak.keccak.finalize_keccak\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.keccak_uint256s_bigend\":{\"destination\":\"starkware.cairo.common.cairo_keccak.keccak.keccak_uint256s_bigend\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.nondet_bigint3\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.nondet_bigint3\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.reduce\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.reduce\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.uint256_to_bigint\":{\"destination\":\"starkware.cairo.common.cairo_secp.bigint.uint256_to_bigint\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.unreduced_mul\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.unreduced_mul\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.unreduced_sqr\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.unreduced_sqr\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.unsigned_div_rem\":{\"destination\":\"starkware.cairo.common.math.unsigned_div_rem\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.validate_reduced_field_element\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.validate_reduced_field_element\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_secp.signature.verify_zero\":{\"destination\":\"starkware.cairo.common.cairo_secp.field.verify_zero\",\"type\":\"alias\"},\"starkware.cairo.common.dict_access.DictAccess\":{\"full_name\":\"starkware.cairo.common.dict_access.DictAccess\",\"members\":{\"key\":{\"cairo_type\":\"felt\",\"offset\":0},\"new_value\":{\"cairo_type\":\"felt\",\"offset\":2},\"prev_value\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.ec.EcOpBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.ec.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.ec.StarkCurve\":{\"type\":\"namespace\"},\"starkware.cairo.common.ec.StarkCurve.ALPHA\":{\"type\":\"const\",\"value\":1},\"starkware.cairo.common.ec.StarkCurve.Args\":{\"full_name\":\"starkware.cairo.common.ec.StarkCurve.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.ec.StarkCurve.BETA\":{\"type\":\"const\",\"value\":-476910135076337975234679399815567221425937815956490878998147463828055613816},\"starkware.cairo.common.ec.StarkCurve.GEN_X\":{\"type\":\"const\",\"value\":874739451078007766457464989774322083649278607533249481151382481072868806602},\"starkware.cairo.common.ec.StarkCurve.GEN_Y\":{\"type\":\"const\",\"value\":152666792071518830868575557812948353041420400780739481342941381225525861407},\"starkware.cairo.common.ec.StarkCurve.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.ec.StarkCurve.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.ec.StarkCurve.ORDER\":{\"type\":\"const\",\"value\":-96363463615509210819012598251359154898},\"starkware.cairo.common.ec.StarkCurve.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.ec.StarkCurve.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.ec.is_quad_residue\":{\"destination\":\"starkware.cairo.common.math.is_quad_residue\",\"type\":\"alias\"},\"starkware.cairo.common.ec_point.EcPoint\":{\"full_name\":\"starkware.cairo.common.ec_point.EcPoint\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.hash.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.keccak_state.KeccakBuiltinState\":{\"full_name\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"members\":{\"s0\":{\"cairo_type\":\"felt\",\"offset\":0},\"s1\":{\"cairo_type\":\"felt\",\"offset\":1},\"s2\":{\"cairo_type\":\"felt\",\"offset\":2},\"s3\":{\"cairo_type\":\"felt\",\"offset\":3},\"s4\":{\"cairo_type\":\"felt\",\"offset\":4},\"s5\":{\"cairo_type\":\"felt\",\"offset\":5},\"s6\":{\"cairo_type\":\"felt\",\"offset\":6},\"s7\":{\"cairo_type\":\"felt\",\"offset\":7}},\"size\":8,\"type\":\"struct\"},\"starkware.cairo.common.math.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"starkware.cairo.common.math.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"starkware.cairo.common.math.assert_le_felt\":{\"decorators\":[\"known_ap_change\"],\"pc\":18,\"type\":\"function\"},\"starkware.cairo.common.math.assert_le_felt.Args\":{\"full_name\":\"starkware.cairo.common.math.assert_le_felt.Args\",\"members\":{\"a\":{\"cairo_type\":\"felt\",\"offset\":0},\"b\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_le_felt.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.math.assert_le_felt.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_le_felt.PRIME_OVER_2_HIGH\":{\"type\":\"const\",\"value\":5316911983139663648412552867652567041},\"starkware.cairo.common.math.assert_le_felt.PRIME_OVER_3_HIGH\":{\"type\":\"const\",\"value\":3544607988759775765608368578435044694},\"starkware.cairo.common.math.assert_le_felt.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.math.assert_le_felt.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.math.assert_le_felt.a\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_le_felt.a\",\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-4), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.math.assert_le_felt.b\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_le_felt.b\",\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.math.assert_le_felt.range_check_ptr\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_le_felt.range_check_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-5), felt*)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":8},\"pc\":28,\"value\":\"cast([fp + (-5)] + 4, felt)\"}],\"type\":\"reference\"},\"starkware.cairo.common.math.assert_le_felt.skip_exclude_a\":{\"pc\":42,\"type\":\"label\"},\"starkware.cairo.common.math.assert_le_felt.skip_exclude_b_minus_a\":{\"pc\":54,\"type\":\"label\"},\"starkware.cairo.common.math.assert_lt_felt\":{\"decorators\":[\"known_ap_change\"],\"pc\":63,\"type\":\"function\"},\"starkware.cairo.common.math.assert_lt_felt.Args\":{\"full_name\":\"starkware.cairo.common.math.assert_lt_felt.Args\",\"members\":{\"a\":{\"cairo_type\":\"felt\",\"offset\":0},\"b\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_lt_felt.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.math.assert_lt_felt.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math.assert_lt_felt.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.math.assert_lt_felt.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.math.assert_lt_felt.a\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_lt_felt.a\",\"references\":[{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":63,\"value\":\"[cast(fp + (-4), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.math.assert_lt_felt.b\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math.assert_lt_felt.b\",\"references\":[{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":63,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.math_cmp.RC_BOUND\":{\"type\":\"const\",\"value\":340282366920938463463374607431768211456},\"starkware.cairo.common.math_cmp.assert_le_felt\":{\"destination\":\"starkware.cairo.common.math.assert_le_felt\",\"type\":\"alias\"},\"starkware.cairo.common.math_cmp.assert_lt_felt\":{\"destination\":\"starkware.cairo.common.math.assert_lt_felt\",\"type\":\"alias\"},\"starkware.cairo.common.math_cmp.is_le_felt\":{\"decorators\":[\"known_ap_change\"],\"pc\":128,\"type\":\"function\"},\"starkware.cairo.common.math_cmp.is_le_felt.Args\":{\"full_name\":\"starkware.cairo.common.math_cmp.is_le_felt.Args\",\"members\":{\"a\":{\"cairo_type\":\"felt\",\"offset\":0},\"b\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.math_cmp.is_le_felt.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.math_cmp.is_le_felt.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.math_cmp.is_le_felt.Return\":{\"cairo_type\":\"felt\",\"type\":\"type_definition\"},\"starkware.cairo.common.math_cmp.is_le_felt.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.math_cmp.is_le_felt.a\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math_cmp.is_le_felt.a\",\"references\":[{\"ap_tracking_data\":{\"group\":11,\"offset\":0},\"pc\":128,\"value\":\"[cast(fp + (-4), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.math_cmp.is_le_felt.b\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.math_cmp.is_le_felt.b\",\"references\":[{\"ap_tracking_data\":{\"group\":11,\"offset\":0},\"pc\":128,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.math_cmp.is_le_felt.not_le\":{\"pc\":140,\"type\":\"label\"},\"starkware.cairo.common.memcpy.memcpy\":{\"decorators\":[],\"pc\":3,\"type\":\"function\"},\"starkware.cairo.common.memcpy.memcpy.Args\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.Args\",\"members\":{\"dst\":{\"cairo_type\":\"felt*\",\"offset\":0},\"len\":{\"cairo_type\":\"felt\",\"offset\":2},\"src\":{\"cairo_type\":\"felt*\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.LoopFrame\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.LoopFrame\",\"members\":{\"dst\":{\"cairo_type\":\"felt*\",\"offset\":0},\"src\":{\"cairo_type\":\"felt*\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.memcpy.memcpy.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.memcpy.memcpy.continue_copying\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.memcpy.memcpy.continue_copying\",\"references\":[{\"ap_tracking_data\":{\"group\":1,\"offset\":3},\"pc\":10,\"value\":\"[cast(ap, felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.memcpy.memcpy.len\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.memcpy.memcpy.len\",\"references\":[{\"ap_tracking_data\":{\"group\":1,\"offset\":0},\"pc\":3,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.memcpy.memcpy.loop\":{\"pc\":8,\"type\":\"label\"},\"starkware.cairo.common.pow.assert_le\":{\"destination\":\"starkware.cairo.common.math.assert_le\",\"type\":\"alias\"},\"starkware.cairo.common.pow.get_ap\":{\"destination\":\"starkware.cairo.common.registers.get_ap\",\"type\":\"alias\"},\"starkware.cairo.common.pow.get_fp_and_pc\":{\"destination\":\"starkware.cairo.common.registers.get_fp_and_pc\",\"type\":\"alias\"},\"starkware.cairo.common.registers.get_ap\":{\"destination\":\"starkware.cairo.lang.compiler.lib.registers.get_ap\",\"type\":\"alias\"},\"starkware.cairo.common.registers.get_fp_and_pc\":{\"destination\":\"starkware.cairo.lang.compiler.lib.registers.get_fp_and_pc\",\"type\":\"alias\"},\"starkware.cairo.common.signature.EcOpBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.signature.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.signature.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"starkware.cairo.common.signature.SignatureBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.signature.StarkCurve\":{\"destination\":\"starkware.cairo.common.ec.StarkCurve\",\"type\":\"alias\"},\"starkware.cairo.common.signature.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"starkware.cairo.common.signature.ec_add\":{\"destination\":\"starkware.cairo.common.ec.ec_add\",\"type\":\"alias\"},\"starkware.cairo.common.signature.ec_mul\":{\"destination\":\"starkware.cairo.common.ec.ec_mul\",\"type\":\"alias\"},\"starkware.cairo.common.signature.ec_sub\":{\"destination\":\"starkware.cairo.common.ec.ec_sub\",\"type\":\"alias\"},\"starkware.cairo.common.signature.is_x_on_curve\":{\"destination\":\"starkware.cairo.common.ec.is_x_on_curve\",\"type\":\"alias\"},\"starkware.cairo.common.signature.recover_y\":{\"destination\":\"starkware.cairo.common.ec.recover_y\",\"type\":\"alias\"},\"starkware.cairo.common.signature.verify_ecdsa_signature\":{\"decorators\":[],\"pc\":123,\"type\":\"function\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.Args\":{\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.Args\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":0},\"public_key\":{\"cairo_type\":\"felt\",\"offset\":1},\"signature_r\":{\"cairo_type\":\"felt\",\"offset\":2},\"signature_s\":{\"cairo_type\":\"felt\",\"offset\":3}},\"size\":4,\"type\":\"struct\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.ImplicitArgs\",\"members\":{\"ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.signature.verify_ecdsa_signature.ecdsa_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin*\",\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.ecdsa_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":123,\"value\":\"[cast(fp + (-7), starkware.cairo.common.cairo_builtins.SignatureBuiltin**)]\"},{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":125,\"value\":\"cast([fp + (-7)] + 2, starkware.cairo.common.cairo_builtins.SignatureBuiltin*)\"}],\"type\":\"reference\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_r\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_r\",\"references\":[{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":123,\"value\":\"[cast(fp + (-4), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_s\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.signature.verify_ecdsa_signature.signature_s\",\"references\":[{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":123,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.uint256.ALL_ONES\":{\"type\":\"const\",\"value\":340282366920938463463374607431768211455},\"starkware.cairo.common.uint256.BitwiseBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.HALF_SHIFT\":{\"type\":\"const\",\"value\":18446744073709551616},\"starkware.cairo.common.uint256.SHIFT\":{\"type\":\"const\",\"value\":340282366920938463463374607431768211456},\"starkware.cairo.common.uint256.Uint256\":{\"full_name\":\"starkware.cairo.common.uint256.Uint256\",\"members\":{\"high\":{\"cairo_type\":\"felt\",\"offset\":1},\"low\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.uint256.assert_in_range\":{\"destination\":\"starkware.cairo.common.math.assert_in_range\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.assert_le\":{\"destination\":\"starkware.cairo.common.math.assert_le\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.assert_nn_le\":{\"destination\":\"starkware.cairo.common.math.assert_nn_le\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.assert_not_zero\":{\"destination\":\"starkware.cairo.common.math.assert_not_zero\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.bitwise_and\":{\"destination\":\"starkware.cairo.common.bitwise.bitwise_and\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.bitwise_or\":{\"destination\":\"starkware.cairo.common.bitwise.bitwise_or\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.bitwise_xor\":{\"destination\":\"starkware.cairo.common.bitwise.bitwise_xor\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.get_ap\":{\"destination\":\"starkware.cairo.common.registers.get_ap\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.get_fp_and_pc\":{\"destination\":\"starkware.cairo.common.registers.get_fp_and_pc\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.is_le\":{\"destination\":\"starkware.cairo.common.math_cmp.is_le\",\"type\":\"alias\"},\"starkware.cairo.common.uint256.pow\":{\"destination\":\"starkware.cairo.common.pow.pow\",\"type\":\"alias\"},\"starkware.starknet.common.storage.ADDR_BOUND\":{\"type\":\"const\",\"value\":-106710729501573572985208420194530329073740042555888586719489},\"starkware.starknet.common.storage.MAX_STORAGE_ITEM_SIZE\":{\"type\":\"const\",\"value\":256},\"starkware.starknet.common.storage.assert_250_bit\":{\"destination\":\"starkware.cairo.common.math.assert_250_bit\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.CALL_CONTRACT_SELECTOR\":{\"type\":\"const\",\"value\":20853273475220472486191784820},\"starkware.starknet.common.syscalls.CallContract\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContract\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"members\":{\"retdata\":{\"cairo_type\":\"felt*\",\"offset\":1},\"retdata_size\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DELEGATE_CALL_SELECTOR\":{\"type\":\"const\",\"value\":21167594061783206823196716140},\"starkware.starknet.common.syscalls.DELEGATE_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":23274015802972845247556842986379118667122},\"starkware.starknet.common.syscalls.DEPLOY_SELECTOR\":{\"type\":\"const\",\"value\":75202468540281},\"starkware.starknet.common.syscalls.Deploy\":{\"full_name\":\"starkware.starknet.common.syscalls.Deploy\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployResponse\",\"offset\":6}},\"size\":9,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployRequest\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"constructor_calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"constructor_calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address_salt\":{\"cairo_type\":\"felt\",\"offset\":2},\"deploy_from_zero\":{\"cairo_type\":\"felt\",\"offset\":5},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":6,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployResponse\",\"members\":{\"constructor_retdata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"constructor_retdata_size\":{\"cairo_type\":\"felt\",\"offset\":1},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DictAccess\":{\"destination\":\"starkware.cairo.common.dict_access.DictAccess\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.EMIT_EVENT_SELECTOR\":{\"type\":\"const\",\"value\":1280709301550335749748},\"starkware.starknet.common.syscalls.EmitEvent\":{\"full_name\":\"starkware.starknet.common.syscalls.EmitEvent\",\"members\":{\"data\":{\"cairo_type\":\"felt*\",\"offset\":4},\"data_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"keys\":{\"cairo_type\":\"felt*\",\"offset\":2},\"keys_len\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GET_BLOCK_NUMBER_SELECTOR\":{\"type\":\"const\",\"value\":1448089106835523001438702345020786},\"starkware.starknet.common.syscalls.GET_BLOCK_TIMESTAMP_SELECTOR\":{\"type\":\"const\",\"value\":24294903732626645868215235778792757751152},\"starkware.starknet.common.syscalls.GET_CALLER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":94901967781393078444254803017658102643},\"starkware.starknet.common.syscalls.GET_CONTRACT_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":6219495360805491471215297013070624192820083},\"starkware.starknet.common.syscalls.GET_SEQUENCER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":1592190833581991703053805829594610833820054387},\"starkware.starknet.common.syscalls.GET_TX_INFO_SELECTOR\":{\"type\":\"const\",\"value\":1317029390204112103023},\"starkware.starknet.common.syscalls.GET_TX_SIGNATURE_SELECTOR\":{\"type\":\"const\",\"value\":1448089128652340074717162277007973},\"starkware.starknet.common.syscalls.GetBlockNumber\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumber\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"members\":{\"block_number\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestamp\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestamp\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"members\":{\"block_timestamp\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"members\":{\"caller_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"members\":{\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"members\":{\"sequencer_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfo\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"members\":{\"tx_info\":{\"cairo_type\":\"starkware.starknet.common.syscalls.TxInfo*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignature\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignature\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"members\":{\"signature\":{\"cairo_type\":\"felt*\",\"offset\":1},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LIBRARY_CALL_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":436233452754198157705746250789557519228244616562},\"starkware.starknet.common.syscalls.LIBRARY_CALL_SELECTOR\":{\"type\":\"const\",\"value\":92376026794327011772951660},\"starkware.starknet.common.syscalls.LibraryCall\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCall\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LibraryCallRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.SEND_MESSAGE_TO_L1_SELECTOR\":{\"type\":\"const\",\"value\":433017908768303439907196859243777073},\"starkware.starknet.common.syscalls.STORAGE_READ_SELECTOR\":{\"type\":\"const\",\"value\":100890693370601760042082660},\"starkware.starknet.common.syscalls.STORAGE_WRITE_SELECTOR\":{\"type\":\"const\",\"value\":25828017502874050592466629733},\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\":{\"full_name\":\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\",\"members\":{\"payload_ptr\":{\"cairo_type\":\"felt*\",\"offset\":3},\"payload_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"to_address\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageRead\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageRead\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageWrite\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageWrite\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"value\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.TxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.TxInfo\",\"members\":{\"account_contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"chain_id\":{\"cairo_type\":\"felt\",\"offset\":6},\"max_fee\":{\"cairo_type\":\"felt\",\"offset\":2},\"nonce\":{\"cairo_type\":\"felt\",\"offset\":7},\"signature\":{\"cairo_type\":\"felt*\",\"offset\":4},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"transaction_hash\":{\"cairo_type\":\"felt\",\"offset\":5},\"version\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":8,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.call_contract\":{\"decorators\":[],\"pc\":74,\"type\":\"function\"},\"starkware.starknet.common.syscalls.call_contract.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.call_contract.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.call_contract.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.call_contract.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.call_contract.Return\":{\"cairo_type\":\"(retdata_size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.call_contract.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.call_contract.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.call_contract.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":4,\"offset\":0},\"pc\":74,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":4,\"offset\":1},\"pc\":81,\"value\":\"cast([fp + (-7)] + 7, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_caller_address\":{\"decorators\":[],\"pc\":86,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_caller_address.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_caller_address.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_caller_address.Return\":{\"cairo_type\":\"(caller_address: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_caller_address.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":5,\"offset\":0},\"pc\":86,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":5,\"offset\":1},\"pc\":89,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_contract_address\":{\"decorators\":[],\"pc\":93,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_contract_address.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_contract_address.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_contract_address.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_contract_address.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_contract_address.Return\":{\"cairo_type\":\"(contract_address: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_contract_address.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_contract_address.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_contract_address.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":6,\"offset\":0},\"pc\":93,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":6,\"offset\":1},\"pc\":96,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_tx_info\":{\"decorators\":[],\"pc\":116,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_tx_info.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_tx_info.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_tx_info.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_tx_info.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_tx_info.Return\":{\"cairo_type\":\"(tx_info: starkware.starknet.common.syscalls.TxInfo*)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_tx_info.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_tx_info.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_tx_info.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":9,\"offset\":0},\"pc\":116,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":9,\"offset\":1},\"pc\":119,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.storage_read\":{\"decorators\":[],\"pc\":100,\"type\":\"function\"},\"starkware.starknet.common.syscalls.storage_read.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_read.Args\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_read.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_read.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_read.Return\":{\"cairo_type\":\"(value: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.storage_read.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.storage_read.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":7,\"offset\":0},\"pc\":100,\"value\":\"[cast(fp + (-4), felt**)]\"},{\"ap_tracking_data\":{\"group\":7,\"offset\":1},\"pc\":104,\"value\":\"cast([fp + (-4)] + 3, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.storage_write\":{\"decorators\":[],\"pc\":108,\"type\":\"function\"},\"starkware.starknet.common.syscalls.storage_write.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_write.Args\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":0},\"value\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_write.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.storage_write.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.storage_write.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.storage_write.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.storage_write.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":8,\"offset\":0},\"pc\":108,\"value\":\"[cast(fp + (-5), felt**)]\"},{\"ap_tracking_data\":{\"group\":8,\"offset\":1},\"pc\":113,\"value\":\"cast([fp + (-5)] + 3, felt*)\"}],\"type\":\"reference\"}},\"main_scope\":\"__main__\",\"prime\":\"0x800000000000011000000000000000000000000000000000000000000000001\",\"reference_manager\":{\"references\":[{\"ap_tracking_data\":{\"group\":1,\"offset\":0},\"pc\":3,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":1,\"offset\":3},\"pc\":10,\"value\":\"[cast(ap, felt*)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-4), felt*)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":18,\"value\":\"[cast(fp + (-5), felt*)]\"},{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":63,\"value\":\"[cast(fp + (-4), felt*)]\"},{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":63,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":4,\"offset\":0},\"pc\":74,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":5,\"offset\":0},\"pc\":86,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":6,\"offset\":0},\"pc\":93,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":7,\"offset\":0},\"pc\":100,\"value\":\"[cast(fp + (-4), felt**)]\"},{\"ap_tracking_data\":{\"group\":8,\"offset\":0},\"pc\":108,\"value\":\"[cast(fp + (-5), felt**)]\"},{\"ap_tracking_data\":{\"group\":9,\"offset\":0},\"pc\":116,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":123,\"value\":\"[cast(fp + (-4), felt*)]\"},{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":123,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":10,\"offset\":0},\"pc\":123,\"value\":\"[cast(fp + (-7), starkware.cairo.common.cairo_builtins.SignatureBuiltin**)]\"},{\"ap_tracking_data\":{\"group\":11,\"offset\":0},\"pc\":128,\"value\":\"[cast(fp + (-4), felt*)]\"},{\"ap_tracking_data\":{\"group\":11,\"offset\":0},\"pc\":128,\"value\":\"[cast(fp + (-3), felt*)]\"}]}}}"
  },
  {
    "path": "contract-artifacts/OpenZeppelinAccount/0.5.1/Account.cairo/Account_abi.json",
    "content": "[{\"members\":[{\"name\":\"to\",\"offset\":0,\"type\":\"felt\"},{\"name\":\"selector\",\"offset\":1,\"type\":\"felt\"},{\"name\":\"data_offset\",\"offset\":2,\"type\":\"felt\"},{\"name\":\"data_len\",\"offset\":3,\"type\":\"felt\"}],\"name\":\"AccountCallArray\",\"size\":4,\"type\":\"struct\"},{\"inputs\":[{\"name\":\"publicKey\",\"type\":\"felt\"}],\"name\":\"constructor\",\"outputs\":[],\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getPublicKey\",\"outputs\":[{\"name\":\"publicKey\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"felt\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"newPublicKey\",\"type\":\"felt\"}],\"name\":\"setPublicKey\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"hash\",\"type\":\"felt\"},{\"name\":\"signature_len\",\"type\":\"felt\"},{\"name\":\"signature\",\"type\":\"felt*\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"name\":\"isValid\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"call_array_len\",\"type\":\"felt\"},{\"name\":\"call_array\",\"type\":\"AccountCallArray*\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__validate__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"class_hash\",\"type\":\"felt\"}],\"name\":\"__validate_declare__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"class_hash\",\"type\":\"felt\"},{\"name\":\"salt\",\"type\":\"felt\"},{\"name\":\"publicKey\",\"type\":\"felt\"}],\"name\":\"__validate_deploy__\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"call_array_len\",\"type\":\"felt\"},{\"name\":\"call_array\",\"type\":\"AccountCallArray*\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__execute__\",\"outputs\":[{\"name\":\"response_len\",\"type\":\"felt\"},{\"name\":\"response\",\"type\":\"felt*\"}],\"type\":\"function\"}]"
  },
  {
    "path": "contract-artifacts/OpenZeppelinUDC/0.5.0/UDC.cairo/UDC.json",
    "content": "{\"abi\":[{\"data\":[{\"name\":\"address\",\"type\":\"felt\"},{\"name\":\"deployer\",\"type\":\"felt\"},{\"name\":\"unique\",\"type\":\"felt\"},{\"name\":\"classHash\",\"type\":\"felt\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"},{\"name\":\"salt\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"ContractDeployed\",\"type\":\"event\"},{\"inputs\":[{\"name\":\"classHash\",\"type\":\"felt\"},{\"name\":\"salt\",\"type\":\"felt\"},{\"name\":\"unique\",\"type\":\"felt\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"deployContract\",\"outputs\":[{\"name\":\"address\",\"type\":\"felt\"}],\"type\":\"function\"}],\"entry_points_by_type\":{\"CONSTRUCTOR\":[],\"EXTERNAL\":[{\"offset\":\"0x9b\",\"selector\":\"0x1987cbd17808b9a23693d4de7e246a443cfe37e6e7fbaeabd7d7e6532b07c3d\"}],\"L1_HANDLER\":[]},\"program\":{\"attributes\":[],\"builtins\":[\"pedersen\",\"range_check\"],\"compiler_version\":\"0.10.0\",\"data\":[\"0x40780017fff7fff\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x400380007ffb7ffc\",\"0x400380017ffb7ffd\",\"0x482680017ffb8000\",\"0x3\",\"0x480280027ffb8000\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffd\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480080007fff8000\",\"0x400080007ffd7fff\",\"0x482480017ffd8001\",\"0x1\",\"0x482480017ffd8001\",\"0x1\",\"0xa0680017fff7ffe\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb\",\"0x402a7ffc7ffd7fff\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x4465706c6f79\",\"0x400280007ff87fff\",\"0x400380017ff87ff9\",\"0x400380027ff87ffa\",\"0x400380037ff87ffb\",\"0x400380047ff87ffc\",\"0x400380057ff87ffd\",\"0x482680017ff88000\",\"0x9\",\"0x480280067ff88000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x47657443616c6c657241646472657373\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x456d69744576656e74\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x5\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffca\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x26b160f10156dea0639bec90696772c640b9706a47f5b8c52ea1abe5858b34d\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc4\",\"0x40137fff7fff8001\",\"0x4003800080017ff7\",\"0x4003800180017ff8\",\"0x4003800280017ff9\",\"0x4003800380017ffa\",\"0x4003800480017ffb\",\"0x400380007ff67ffb\",\"0x402780017ff68002\",\"0x1\",\"0x4826800180018000\",\"0x5\",\"0x40297ffb7fff8003\",\"0x4826800180018000\",\"0x5\",\"0x480a7ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbb\",\"0x4003800080037ffd\",\"0x4826800180038000\",\"0x1\",\"0x480a7ff57fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd2\",\"0x480a80027fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x6\",\"0x480a7ff67fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc4\",\"0x40137ffe7fff8000\",\"0x40137fff7fff8001\",\"0x482680017ffb8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x20680017fff7fff\",\"0xd\",\"0x480a7ff77fff8000\",\"0x480a80017fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff98\",\"0x40137fff7fff8002\",\"0x400780017fff8003\",\"0x0\",\"0x48127ffe7fff8000\",\"0x10780017fff7fff\",\"0x6\",\"0x400b7ffa7fff8002\",\"0x400780017fff8003\",\"0x1\",\"0x480a7ff77fff8000\",\"0x40137fff7fff8004\",\"0x480a80007fff8000\",\"0x480a7ff97fff8000\",\"0x480a80027fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480a80037fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff9a\",\"0x40137fff7fff8005\",\"0x48127ffe7fff8000\",\"0x480a7ff87fff8000\",\"0x480a80057fff8000\",\"0x480a80017fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffab\",\"0x48127ffe7fff8000\",\"0x480a80047fff8000\",\"0x48127ffd7fff8000\",\"0x480a80057fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280037ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x4\",\"0x480280037ffd8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480280027ffd8000\",\"0x480280037ffd8000\",\"0x482680017ffd8000\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb1\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe2\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\"],\"hints\":{\"0\":[{\"accessible_scopes\":[\"starkware.cairo.common.alloc\",\"starkware.cairo.common.alloc.alloc\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":0,\"offset\":0},\"reference_ids\":{}}}],\"12\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"vm_enter_scope({'n': ids.len})\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":0},\"reference_ids\":{\"starkware.cairo.common.memcpy.memcpy.len\":0}}}],\"20\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"n -= 1\\nids.continue_copying = 1 if n > 0 else 0\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":5},\"reference_ids\":{\"starkware.cairo.common.memcpy.memcpy.continue_copying\":1}}}],\"23\":[{\"accessible_scopes\":[\"starkware.cairo.common.memcpy\",\"starkware.cairo.common.memcpy.memcpy\"],\"code\":\"vm_exit_scope()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":2,\"offset\":6},\"reference_ids\":{}}}],\"32\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.deploy\"],\"code\":\"syscall_handler.deploy(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":3,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.deploy.syscall_ptr\":2}}}],\"39\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.get_caller_address\"],\"code\":\"syscall_handler.get_caller_address(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":4,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\":3}}}],\"50\":[{\"accessible_scopes\":[\"starkware.starknet.common.syscalls\",\"starkware.starknet.common.syscalls.emit_event\"],\"code\":\"syscall_handler.emit_event(segments=segments, syscall_ptr=ids.syscall_ptr)\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":5,\"offset\":1},\"reference_ids\":{\"starkware.starknet.common.syscalls.emit_event.syscall_ptr\":4}}}],\"146\":[{\"accessible_scopes\":[\"__main__\",\"__main__\",\"__wrappers__\",\"__wrappers__.deployContract_encode_return\"],\"code\":\"memory[ap] = segments.add()\",\"flow_tracking_data\":{\"ap_tracking\":{\"group\":11,\"offset\":0},\"reference_ids\":{}}}]},\"identifiers\":{\"__main__.ContractDeployed\":{\"type\":\"namespace\"},\"__main__.ContractDeployed.Args\":{\"full_name\":\"__main__.ContractDeployed.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.ContractDeployed.ImplicitArgs\":{\"full_name\":\"__main__.ContractDeployed.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__main__.ContractDeployed.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.ContractDeployed.SELECTOR\":{\"type\":\"const\",\"value\":1093830577610461490539113735431936179703456330374563419579920790156759053133},\"__main__.ContractDeployed.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__main__.ContractDeployed.alloc\":{\"destination\":\"starkware.cairo.common.alloc.alloc\",\"type\":\"alias\"},\"__main__.ContractDeployed.emit\":{\"decorators\":[],\"pc\":53,\"type\":\"function\"},\"__main__.ContractDeployed.emit.Args\":{\"full_name\":\"__main__.ContractDeployed.emit.Args\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":0},\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":5},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":4},\"classHash\":{\"cairo_type\":\"felt\",\"offset\":3},\"deployer\":{\"cairo_type\":\"felt\",\"offset\":1},\"salt\":{\"cairo_type\":\"felt\",\"offset\":6},\"unique\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":7,\"type\":\"struct\"},\"__main__.ContractDeployed.emit.ImplicitArgs\":{\"full_name\":\"__main__.ContractDeployed.emit.ImplicitArgs\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__main__.ContractDeployed.emit.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"__main__.ContractDeployed.emit.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":4},\"__main__.ContractDeployed.emit_event\":{\"destination\":\"starkware.starknet.common.syscalls.emit_event\",\"type\":\"alias\"},\"__main__.ContractDeployed.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"__main__.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"__main__.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"__main__.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"__main__.deploy\":{\"destination\":\"starkware.starknet.common.syscalls.deploy\",\"type\":\"alias\"},\"__main__.deployContract\":{\"decorators\":[\"external\"],\"pc\":94,\"type\":\"function\"},\"__main__.deployContract.Args\":{\"full_name\":\"__main__.deployContract.Args\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"classHash\":{\"cairo_type\":\"felt\",\"offset\":0},\"salt\":{\"cairo_type\":\"felt\",\"offset\":1},\"unique\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":5,\"type\":\"struct\"},\"__main__.deployContract.ImplicitArgs\":{\"full_name\":\"__main__.deployContract.ImplicitArgs\",\"members\":{\"pedersen_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":1},\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":2},\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"__main__.deployContract.Return\":{\"cairo_type\":\"(address: felt)\",\"type\":\"type_definition\"},\"__main__.deployContract.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":6},\"__main__.get_caller_address\":{\"destination\":\"starkware.starknet.common.syscalls.get_caller_address\",\"type\":\"alias\"},\"__main__.hash2\":{\"destination\":\"starkware.cairo.common.hash.hash2\",\"type\":\"alias\"},\"__wrappers__.deployContract\":{\"decorators\":[\"external\"],\"pc\":155,\"type\":\"function\"},\"__wrappers__.deployContract.Args\":{\"full_name\":\"__wrappers__.deployContract.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.deployContract.ImplicitArgs\":{\"full_name\":\"__wrappers__.deployContract.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.deployContract.Return\":{\"cairo_type\":\"(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, size: felt, retdata: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.deployContract.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"__wrappers__.deployContract.__wrapped_func\":{\"destination\":\"__main__.deployContract\",\"type\":\"alias\"},\"__wrappers__.deployContract_encode_return\":{\"decorators\":[],\"pc\":146,\"type\":\"function\"},\"__wrappers__.deployContract_encode_return.Args\":{\"full_name\":\"__wrappers__.deployContract_encode_return.Args\",\"members\":{\"range_check_ptr\":{\"cairo_type\":\"felt\",\"offset\":1},\"ret_value\":{\"cairo_type\":\"(address: felt)\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"__wrappers__.deployContract_encode_return.ImplicitArgs\":{\"full_name\":\"__wrappers__.deployContract_encode_return.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"__wrappers__.deployContract_encode_return.Return\":{\"cairo_type\":\"(range_check_ptr: felt, data_len: felt, data: felt*)\",\"type\":\"type_definition\"},\"__wrappers__.deployContract_encode_return.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":1},\"__wrappers__.deployContract_encode_return.memcpy\":{\"destination\":\"starkware.cairo.common.memcpy.memcpy\",\"type\":\"alias\"},\"starkware.cairo.common.alloc.alloc\":{\"decorators\":[],\"pc\":0,\"type\":\"function\"},\"starkware.cairo.common.alloc.alloc.Args\":{\"full_name\":\"starkware.cairo.common.alloc.alloc.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.alloc.alloc.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.alloc.alloc.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.alloc.alloc.Return\":{\"cairo_type\":\"(ptr: felt*)\",\"type\":\"type_definition\"},\"starkware.cairo.common.alloc.alloc.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.bool.FALSE\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.bool.TRUE\":{\"type\":\"const\",\"value\":1},\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.BitwiseBuiltin\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"x_and_y\":{\"cairo_type\":\"felt\",\"offset\":2},\"x_or_y\":{\"cairo_type\":\"felt\",\"offset\":4},\"x_xor_y\":{\"cairo_type\":\"felt\",\"offset\":3},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":5,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.EcOpBuiltin\",\"members\":{\"m\":{\"cairo_type\":\"felt\",\"offset\":4},\"p\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":0},\"q\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":2},\"r\":{\"cairo_type\":\"starkware.cairo.common.ec_point.EcPoint\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.EcPoint\":{\"destination\":\"starkware.cairo.common.ec_point.EcPoint\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.HashBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"members\":{\"result\":{\"cairo_type\":\"felt\",\"offset\":2},\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.KeccakBuiltin\",\"members\":{\"input\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":0},\"output\":{\"cairo_type\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"offset\":8}},\"size\":16,\"type\":\"struct\"},\"starkware.cairo.common.cairo_builtins.KeccakBuiltinState\":{\"destination\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"type\":\"alias\"},\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\":{\"full_name\":\"starkware.cairo.common.cairo_builtins.SignatureBuiltin\",\"members\":{\"message\":{\"cairo_type\":\"felt\",\"offset\":1},\"pub_key\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.dict_access.DictAccess\":{\"full_name\":\"starkware.cairo.common.dict_access.DictAccess\",\"members\":{\"key\":{\"cairo_type\":\"felt\",\"offset\":0},\"new_value\":{\"cairo_type\":\"felt\",\"offset\":2},\"prev_value\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.ec_point.EcPoint\":{\"full_name\":\"starkware.cairo.common.ec_point.EcPoint\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.hash.HashBuiltin\":{\"destination\":\"starkware.cairo.common.cairo_builtins.HashBuiltin\",\"type\":\"alias\"},\"starkware.cairo.common.hash.hash2\":{\"decorators\":[],\"pc\":3,\"type\":\"function\"},\"starkware.cairo.common.hash.hash2.Args\":{\"full_name\":\"starkware.cairo.common.hash.hash2.Args\",\"members\":{\"x\":{\"cairo_type\":\"felt\",\"offset\":0},\"y\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.hash.hash2.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.hash.hash2.ImplicitArgs\",\"members\":{\"hash_ptr\":{\"cairo_type\":\"starkware.cairo.common.cairo_builtins.HashBuiltin*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.cairo.common.hash.hash2.Return\":{\"cairo_type\":\"(result: felt)\",\"type\":\"type_definition\"},\"starkware.cairo.common.hash.hash2.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.keccak_state.KeccakBuiltinState\":{\"full_name\":\"starkware.cairo.common.keccak_state.KeccakBuiltinState\",\"members\":{\"s0\":{\"cairo_type\":\"felt\",\"offset\":0},\"s1\":{\"cairo_type\":\"felt\",\"offset\":1},\"s2\":{\"cairo_type\":\"felt\",\"offset\":2},\"s3\":{\"cairo_type\":\"felt\",\"offset\":3},\"s4\":{\"cairo_type\":\"felt\",\"offset\":4},\"s5\":{\"cairo_type\":\"felt\",\"offset\":5},\"s6\":{\"cairo_type\":\"felt\",\"offset\":6},\"s7\":{\"cairo_type\":\"felt\",\"offset\":7}},\"size\":8,\"type\":\"struct\"},\"starkware.cairo.common.math.FALSE\":{\"destination\":\"starkware.cairo.common.bool.FALSE\",\"type\":\"alias\"},\"starkware.cairo.common.math.TRUE\":{\"destination\":\"starkware.cairo.common.bool.TRUE\",\"type\":\"alias\"},\"starkware.cairo.common.memcpy.memcpy\":{\"decorators\":[],\"pc\":9,\"type\":\"function\"},\"starkware.cairo.common.memcpy.memcpy.Args\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.Args\",\"members\":{\"dst\":{\"cairo_type\":\"felt*\",\"offset\":0},\"len\":{\"cairo_type\":\"felt\",\"offset\":2},\"src\":{\"cairo_type\":\"felt*\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.ImplicitArgs\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.ImplicitArgs\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.LoopFrame\":{\"full_name\":\"starkware.cairo.common.memcpy.memcpy.LoopFrame\",\"members\":{\"dst\":{\"cairo_type\":\"felt*\",\"offset\":0},\"src\":{\"cairo_type\":\"felt*\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.cairo.common.memcpy.memcpy.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.cairo.common.memcpy.memcpy.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.cairo.common.memcpy.memcpy.continue_copying\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.memcpy.memcpy.continue_copying\",\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":3},\"pc\":16,\"value\":\"[cast(ap, felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.memcpy.memcpy.len\":{\"cairo_type\":\"felt\",\"full_name\":\"starkware.cairo.common.memcpy.memcpy.len\",\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":9,\"value\":\"[cast(fp + (-3), felt*)]\"}],\"type\":\"reference\"},\"starkware.cairo.common.memcpy.memcpy.loop\":{\"pc\":14,\"type\":\"label\"},\"starkware.starknet.common.storage.ADDR_BOUND\":{\"type\":\"const\",\"value\":-106710729501573572985208420194530329073740042555888586719489},\"starkware.starknet.common.storage.MAX_STORAGE_ITEM_SIZE\":{\"type\":\"const\",\"value\":256},\"starkware.starknet.common.storage.assert_250_bit\":{\"destination\":\"starkware.cairo.common.math.assert_250_bit\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.CALL_CONTRACT_SELECTOR\":{\"type\":\"const\",\"value\":20853273475220472486191784820},\"starkware.starknet.common.syscalls.CallContract\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContract\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.CallContractResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"members\":{\"retdata\":{\"cairo_type\":\"felt*\",\"offset\":1},\"retdata_size\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DELEGATE_CALL_SELECTOR\":{\"type\":\"const\",\"value\":21167594061783206823196716140},\"starkware.starknet.common.syscalls.DELEGATE_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":23274015802972845247556842986379118667122},\"starkware.starknet.common.syscalls.DEPLOY_SELECTOR\":{\"type\":\"const\",\"value\":75202468540281},\"starkware.starknet.common.syscalls.Deploy\":{\"full_name\":\"starkware.starknet.common.syscalls.Deploy\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.DeployResponse\",\"offset\":6}},\"size\":9,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployRequest\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"constructor_calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"constructor_calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"contract_address_salt\":{\"cairo_type\":\"felt\",\"offset\":2},\"deploy_from_zero\":{\"cairo_type\":\"felt\",\"offset\":5},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":6,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DeployResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.DeployResponse\",\"members\":{\"constructor_retdata\":{\"cairo_type\":\"felt*\",\"offset\":2},\"constructor_retdata_size\":{\"cairo_type\":\"felt\",\"offset\":1},\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.DictAccess\":{\"destination\":\"starkware.cairo.common.dict_access.DictAccess\",\"type\":\"alias\"},\"starkware.starknet.common.syscalls.EMIT_EVENT_SELECTOR\":{\"type\":\"const\",\"value\":1280709301550335749748},\"starkware.starknet.common.syscalls.EmitEvent\":{\"full_name\":\"starkware.starknet.common.syscalls.EmitEvent\",\"members\":{\"data\":{\"cairo_type\":\"felt*\",\"offset\":4},\"data_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"keys\":{\"cairo_type\":\"felt*\",\"offset\":2},\"keys_len\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GET_BLOCK_NUMBER_SELECTOR\":{\"type\":\"const\",\"value\":1448089106835523001438702345020786},\"starkware.starknet.common.syscalls.GET_BLOCK_TIMESTAMP_SELECTOR\":{\"type\":\"const\",\"value\":24294903732626645868215235778792757751152},\"starkware.starknet.common.syscalls.GET_CALLER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":94901967781393078444254803017658102643},\"starkware.starknet.common.syscalls.GET_CONTRACT_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":6219495360805491471215297013070624192820083},\"starkware.starknet.common.syscalls.GET_SEQUENCER_ADDRESS_SELECTOR\":{\"type\":\"const\",\"value\":1592190833581991703053805829594610833820054387},\"starkware.starknet.common.syscalls.GET_TX_INFO_SELECTOR\":{\"type\":\"const\",\"value\":1317029390204112103023},\"starkware.starknet.common.syscalls.GET_TX_SIGNATURE_SELECTOR\":{\"type\":\"const\",\"value\":1448089128652340074717162277007973},\"starkware.starknet.common.syscalls.GetBlockNumber\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumber\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockNumberResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockNumberResponse\",\"members\":{\"block_number\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestamp\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestamp\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetBlockTimestampResponse\",\"members\":{\"block_timestamp\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetCallerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetCallerAddressResponse\",\"members\":{\"caller_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetContractAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetContractAddressResponse\",\"members\":{\"contract_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddress\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddress\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetSequencerAddressResponse\",\"members\":{\"sequencer_address\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfo\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"offset\":1}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxInfoResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxInfoResponse\",\"members\":{\"tx_info\":{\"cairo_type\":\"starkware.starknet.common.syscalls.TxInfo*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignature\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignature\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"offset\":1}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureRequest\",\"members\":{\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.GetTxSignatureResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.GetTxSignatureResponse\",\"members\":{\"signature\":{\"cairo_type\":\"felt*\",\"offset\":1},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LIBRARY_CALL_L1_HANDLER_SELECTOR\":{\"type\":\"const\",\"value\":436233452754198157705746250789557519228244616562},\"starkware.starknet.common.syscalls.LIBRARY_CALL_SELECTOR\":{\"type\":\"const\",\"value\":92376026794327011772951660},\"starkware.starknet.common.syscalls.LibraryCall\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCall\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.CallContractResponse\",\"offset\":5}},\"size\":7,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.LibraryCallRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.LibraryCallRequest\",\"members\":{\"calldata\":{\"cairo_type\":\"felt*\",\"offset\":4},\"calldata_size\":{\"cairo_type\":\"felt\",\"offset\":3},\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":1},\"function_selector\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.SEND_MESSAGE_TO_L1_SELECTOR\":{\"type\":\"const\",\"value\":433017908768303439907196859243777073},\"starkware.starknet.common.syscalls.STORAGE_READ_SELECTOR\":{\"type\":\"const\",\"value\":100890693370601760042082660},\"starkware.starknet.common.syscalls.STORAGE_WRITE_SELECTOR\":{\"type\":\"const\",\"value\":25828017502874050592466629733},\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\":{\"full_name\":\"starkware.starknet.common.syscalls.SendMessageToL1SysCall\",\"members\":{\"payload_ptr\":{\"cairo_type\":\"felt*\",\"offset\":3},\"payload_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"to_address\":{\"cairo_type\":\"felt\",\"offset\":1}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageRead\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageRead\",\"members\":{\"request\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"offset\":0},\"response\":{\"cairo_type\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadRequest\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadRequest\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":2,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageReadResponse\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageReadResponse\",\"members\":{\"value\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.StorageWrite\":{\"full_name\":\"starkware.starknet.common.syscalls.StorageWrite\",\"members\":{\"address\":{\"cairo_type\":\"felt\",\"offset\":1},\"selector\":{\"cairo_type\":\"felt\",\"offset\":0},\"value\":{\"cairo_type\":\"felt\",\"offset\":2}},\"size\":3,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.TxInfo\":{\"full_name\":\"starkware.starknet.common.syscalls.TxInfo\",\"members\":{\"account_contract_address\":{\"cairo_type\":\"felt\",\"offset\":1},\"chain_id\":{\"cairo_type\":\"felt\",\"offset\":6},\"max_fee\":{\"cairo_type\":\"felt\",\"offset\":2},\"nonce\":{\"cairo_type\":\"felt\",\"offset\":7},\"signature\":{\"cairo_type\":\"felt*\",\"offset\":4},\"signature_len\":{\"cairo_type\":\"felt\",\"offset\":3},\"transaction_hash\":{\"cairo_type\":\"felt\",\"offset\":5},\"version\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":8,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.deploy\":{\"decorators\":[],\"pc\":24,\"type\":\"function\"},\"starkware.starknet.common.syscalls.deploy.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.deploy.Args\",\"members\":{\"class_hash\":{\"cairo_type\":\"felt\",\"offset\":0},\"constructor_calldata\":{\"cairo_type\":\"felt*\",\"offset\":3},\"constructor_calldata_size\":{\"cairo_type\":\"felt\",\"offset\":2},\"contract_address_salt\":{\"cairo_type\":\"felt\",\"offset\":1},\"deploy_from_zero\":{\"cairo_type\":\"felt\",\"offset\":4}},\"size\":5,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.deploy.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.deploy.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.deploy.Return\":{\"cairo_type\":\"(contract_address: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.deploy.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.deploy.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.deploy.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":24,\"value\":\"[cast(fp + (-8), felt**)]\"},{\"ap_tracking_data\":{\"group\":3,\"offset\":1},\"pc\":32,\"value\":\"cast([fp + (-8)] + 9, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.emit_event\":{\"decorators\":[],\"pc\":43,\"type\":\"function\"},\"starkware.starknet.common.syscalls.emit_event.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.emit_event.Args\",\"members\":{\"data\":{\"cairo_type\":\"felt*\",\"offset\":3},\"data_len\":{\"cairo_type\":\"felt\",\"offset\":2},\"keys\":{\"cairo_type\":\"felt*\",\"offset\":1},\"keys_len\":{\"cairo_type\":\"felt\",\"offset\":0}},\"size\":4,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.emit_event.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.emit_event.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.emit_event.Return\":{\"cairo_type\":\"()\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.emit_event.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.emit_event.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.emit_event.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":5,\"offset\":0},\"pc\":43,\"value\":\"[cast(fp + (-7), felt**)]\"},{\"ap_tracking_data\":{\"group\":5,\"offset\":1},\"pc\":50,\"value\":\"cast([fp + (-7)] + 5, felt*)\"}],\"type\":\"reference\"},\"starkware.starknet.common.syscalls.get_caller_address\":{\"decorators\":[],\"pc\":36,\"type\":\"function\"},\"starkware.starknet.common.syscalls.get_caller_address.Args\":{\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.Args\",\"members\":{},\"size\":0,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_caller_address.ImplicitArgs\":{\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.ImplicitArgs\",\"members\":{\"syscall_ptr\":{\"cairo_type\":\"felt*\",\"offset\":0}},\"size\":1,\"type\":\"struct\"},\"starkware.starknet.common.syscalls.get_caller_address.Return\":{\"cairo_type\":\"(caller_address: felt)\",\"type\":\"type_definition\"},\"starkware.starknet.common.syscalls.get_caller_address.SIZEOF_LOCALS\":{\"type\":\"const\",\"value\":0},\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\":{\"cairo_type\":\"felt*\",\"full_name\":\"starkware.starknet.common.syscalls.get_caller_address.syscall_ptr\",\"references\":[{\"ap_tracking_data\":{\"group\":4,\"offset\":0},\"pc\":36,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":4,\"offset\":1},\"pc\":39,\"value\":\"cast([fp + (-3)] + 2, felt*)\"}],\"type\":\"reference\"}},\"main_scope\":\"__main__\",\"prime\":\"0x800000000000011000000000000000000000000000000000000000000000001\",\"reference_manager\":{\"references\":[{\"ap_tracking_data\":{\"group\":2,\"offset\":0},\"pc\":9,\"value\":\"[cast(fp + (-3), felt*)]\"},{\"ap_tracking_data\":{\"group\":2,\"offset\":3},\"pc\":16,\"value\":\"[cast(ap, felt*)]\"},{\"ap_tracking_data\":{\"group\":3,\"offset\":0},\"pc\":24,\"value\":\"[cast(fp + (-8), felt**)]\"},{\"ap_tracking_data\":{\"group\":4,\"offset\":0},\"pc\":36,\"value\":\"[cast(fp + (-3), felt**)]\"},{\"ap_tracking_data\":{\"group\":5,\"offset\":0},\"pc\":43,\"value\":\"[cast(fp + (-7), felt**)]\"}]}}}"
  },
  {
    "path": "contract-artifacts/OpenZeppelinUDC/0.5.0/UDC.cairo/UDC_abi.json",
    "content": "[{\"data\":[{\"name\":\"address\",\"type\":\"felt\"},{\"name\":\"deployer\",\"type\":\"felt\"},{\"name\":\"unique\",\"type\":\"felt\"},{\"name\":\"classHash\",\"type\":\"felt\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"},{\"name\":\"salt\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"ContractDeployed\",\"type\":\"event\"},{\"inputs\":[{\"name\":\"classHash\",\"type\":\"felt\"},{\"name\":\"salt\",\"type\":\"felt\"},{\"name\":\"unique\",\"type\":\"felt\"},{\"name\":\"calldata_len\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"deployContract\",\"outputs\":[{\"name\":\"address\",\"type\":\"felt\"}],\"type\":\"function\"}]"
  },
  {
    "path": "contract-artifacts/Token/ERC20.cairo/ERC20.json",
    "content": "{\"abi\":[{\"inputs\":[],\"name\":\"finalized\",\"outputs\":[{\"name\":\"res\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"data\":[{\"name\":\"new_governor_nominee\",\"type\":\"felt\"},{\"name\":\"nominated_by\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"governor_nominated\",\"type\":\"event\"},{\"data\":[{\"name\":\"cancelled_nominee\",\"type\":\"felt\"},{\"name\":\"cancelled_by\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"nomination_cancelled\",\"type\":\"event\"},{\"data\":[{\"name\":\"removed_governor\",\"type\":\"felt\"},{\"name\":\"removed_by\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"governor_removed\",\"type\":\"event\"},{\"data\":[{\"name\":\"new_governor\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"governance_accepted\",\"type\":\"event\"},{\"inputs\":[{\"name\":\"account\",\"type\":\"felt\"}],\"name\":\"is_governor\",\"outputs\":[{\"name\":\"is_governor_\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init_governance\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"nominee\",\"type\":\"felt\"}],\"name\":\"nominate_new_governor\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"cancelee\",\"type\":\"felt\"}],\"name\":\"cancel_nomination\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"removee\",\"type\":\"felt\"}],\"name\":\"remove_governor\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[],\"name\":\"accept_governance\",\"outputs\":[],\"type\":\"function\"},{\"data\":[{\"name\":\"implementation\",\"type\":\"felt\"},{\"name\":\"eic_address\",\"type\":\"felt\"},{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"},{\"name\":\"final\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"implementation_added\",\"type\":\"event\"},{\"data\":[{\"name\":\"implementation\",\"type\":\"felt\"},{\"name\":\"eic_address\",\"type\":\"felt\"},{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"},{\"name\":\"final\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"implementation_removed\",\"type\":\"event\"},{\"data\":[{\"name\":\"implementation\",\"type\":\"felt\"},{\"name\":\"eic_address\",\"type\":\"felt\"},{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"}],\"keys\":[],\"name\":\"implementation_upgraded\",\"type\":\"event\"},{\"data\":[{\"name\":\"implementation\",\"type\":\"felt\"}],\"keys\":[],\"name\":\"implementation_finalized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"name\":\"address\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"implementation_\",\"type\":\"felt\"},{\"name\":\"eic_address\",\"type\":\"felt\"},{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"},{\"name\":\"final\",\"type\":\"felt\"}],\"name\":\"implementation_time\",\"outputs\":[{\"name\":\"time\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"implementation_\",\"type\":\"felt\"},{\"name\":\"eic_address\",\"type\":\"felt\"},{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"},{\"name\":\"final\",\"type\":\"felt\"}],\"name\":\"add_implementation\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"implementation_\",\"type\":\"felt\"},{\"name\":\"eic_address\",\"type\":\"felt\"},{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"},{\"name\":\"final\",\"type\":\"felt\"}],\"name\":\"remove_implementation\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"implementation_\",\"type\":\"felt\"},{\"name\":\"eic_address\",\"type\":\"felt\"},{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"},{\"name\":\"final\",\"type\":\"felt\"}],\"name\":\"upgrade_to\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"init_vector_len\",\"type\":\"felt\"},{\"name\":\"init_vector\",\"type\":\"felt*\"}],\"name\":\"initialize\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"upgrade_delay_seconds\",\"type\":\"felt\"}],\"name\":\"constructor\",\"outputs\":[],\"type\":\"constructor\"},{\"inputs\":[{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_size\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__default__\",\"outputs\":[{\"name\":\"retdata_size\",\"type\":\"felt\"},{\"name\":\"retdata\",\"type\":\"felt*\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"selector\",\"type\":\"felt\"},{\"name\":\"calldata_size\",\"type\":\"felt\"},{\"name\":\"calldata\",\"type\":\"felt*\"}],\"name\":\"__l1_default__\",\"outputs\":[],\"type\":\"l1_handler\"}],\"bytecode\":[\"0x40780017fff7fff\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x400380007ffb7ffc\",\"0x400380017ffb7ffd\",\"0x482680017ffb8000\",\"0x3\",\"0x480280027ffb8000\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffd\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480080007fff8000\",\"0x400080007ffd7fff\",\"0x482480017ffd8001\",\"0x1\",\"0x482480017ffd8001\",\"0x1\",\"0xa0680017fff7ffe\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb\",\"0x402a7ffc7ffd7fff\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffd\",\"0x4\",\"0x400780017fff7ffd\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x48297ffd80007ffc\",\"0x20680017fff7fff\",\"0x4\",\"0x402780017ffc7ffc\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x400380007ffc7ffd\",\"0x482680017ffc8000\",\"0x1\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x48297ffc80007ffd\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x3ffffffffffffffffffffffffffffff\",\"0x480280017ffc8000\",\"0x48307fff80007ffe\",\"0x400280027ffc7fff\",\"0x480280017ffc8000\",\"0x484480017fff8000\",\"0x100000000000000000000000000000000\",\"0x480280007ffc8000\",\"0x40317fff7ffe7ffd\",\"0x482680017ffc8000\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x20680017fff7fff\",\"0x10\",\"0x480a7ffc7fff8000\",\"0x482680017ffd8000\",\"0x11000000000000000000000000000000000000000000000101\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480680017fff8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x48127ffe7fff8000\",\"0x48287ffd80007ffe\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe7\",\"0x482680017ffd8000\",\"0x11000000000000000000000000000000000000000000000101\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x20680017fff7fff\",\"0xc\",\"0x40780017fff7fff\",\"0xa\",\"0x480680017fff8000\",\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff\",\"0x480a7ffc7fff8000\",\"0x48287ffd80007ffe\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd8\",\"0x10780017fff7fff\",\"0x8\",\"0x40780017fff7fff\",\"0xb\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd0\",\"0x480a7ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x44656c656761746543616c6c\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x7\",\"0x480280057ff98000\",\"0x480280067ff98000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x44656c65676174654c3148616e646c6572\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x7\",\"0x480280057ff98000\",\"0x480280067ff98000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x47657443616c6c657241646472657373\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x476574426c6f636b54696d657374616d70\",\"0x400280007ffd7fff\",\"0x482680017ffd8000\",\"0x2\",\"0x480280017ffd8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f7261676552656164\",\"0x400280007ffc7fff\",\"0x400380017ffc7ffd\",\"0x482680017ffc8000\",\"0x3\",\"0x480280027ffc8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x53746f726167655772697465\",\"0x400280007ffb7fff\",\"0x400380017ffb7ffc\",\"0x400380027ffb7ffd\",\"0x482680017ffb8000\",\"0x3\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x456d69744576656e74\",\"0x400280007ff97fff\",\"0x400380017ff97ffa\",\"0x400380027ff97ffb\",\"0x400380037ff97ffc\",\"0x400380047ff97ffd\",\"0x482680017ff98000\",\"0x5\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x3deed800708b45e9b8d2fb1c674394761dfb20b8c89d199e6c4cdb0974dd906\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdc\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd6\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe5\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe0\",\"0x400680017fff7fff\",\"0x0\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x480680017fff8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc5\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0xe8fc4f1b6b3dc661208f9a8a5017a6c059098327e31518722e0a5c3a5a7e86\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff8b\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff85\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x10bce98963d2e4d3c96d1d25422c3d2a989cdbb9fb71db6f95dcbfba8c4b3c8\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef0\",\"0x480a7ffc7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff22\",\"0x48127fe17fff8000\",\"0x48127ffd7fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff63\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe2\",\"0x480a7ff97fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff5c\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x222d6589b56d0ac1912a58387989f966f458b8de84e71844d58a394dafbd671\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec7\",\"0x480a7ffc7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef9\",\"0x48127fe17fff8000\",\"0x48127ffd7fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff3a\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe2\",\"0x480a7ff97fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff33\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe9d\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x3774b0545aabb37c45c1eddc6a7dae57de498aae6d5e3589e362d4b4323a533\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe97\",\"0x40137fff7fff8001\",\"0x4003800080017ffc\",\"0x4003800180017ffd\",\"0x4826800180018000\",\"0x2\",\"0x480a7ffa7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff21\",\"0x480a7ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe84\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x19b0b96cb0e0029733092527bca81129db5f327c064199b31ed8a9f857fdee3\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe7e\",\"0x40137fff7fff8001\",\"0x4003800080017ffc\",\"0x4003800180017ffd\",\"0x4826800180018000\",\"0x2\",\"0x480a7ffa7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff08\",\"0x480a7ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe6b\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x3b7aa6f257721ed65dae25f8a1ee350b92d02cd59a9dcfb1fc4e8887be194ec\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe65\",\"0x40137fff7fff8001\",\"0x4003800080017ffc\",\"0x4003800180017ffd\",\"0x4826800180018000\",\"0x2\",\"0x480a7ffa7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeef\",\"0x480a7ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe52\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x4595132f9b33b7077ebf2e7f3eb746a8e0a6d5c337c71cd8f9bf46cac3cfd7\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe4c\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed7\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff56\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffea\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0e\",\"0x400680017fff7fff\",\"0x0\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8b\",\"0x48127ffe7fff8000\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0f\",\"0x48127fe97fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff32\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x48127fae7fff8000\",\"0x48127fad7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff62\",\"0x48127f967fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffaa\",\"0x48127ffe7fff8000\",\"0x48127fcc7fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffda\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0xc7\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa7\",\"0x400680017fff7fff\",\"0x0\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff2d\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe4e\",\"0x48127ffe7fff8000\",\"0x48127ff87fff8000\",\"0x480a7ffd7fff8000\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff31\",\"0x48127ffe7fff8000\",\"0x48127fdd7fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdb\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x96\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef8\",\"0x20680017fff7fff\",\"0x6\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef8\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe19\",\"0x48127ffe7fff8000\",\"0x48127ff87fff8000\",\"0x480a7ffd7fff8000\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff15\",\"0x48127ffe7fff8000\",\"0x48127fdd7fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd7\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x61\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff41\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd92\",\"0x48127ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdf0\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd91\",\"0x48127ffa7fff8000\",\"0x48127ff07fff8000\",\"0x48127ff07fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe98\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x48127fbc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffefa\",\"0x48127ffe7fff8000\",\"0x48127fe37fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd8\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdc6\",\"0x48127ffe7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8e\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd5d\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127fbd7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe92\",\"0x48127f847fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe64\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x48127f497fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee0\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdc\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd96\",\"0x48127ffe7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffedc\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd2d\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x48127ffa7fff8000\",\"0x208b7fff7fff7ffe\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffe\",\"0x400780017fff8000\",\"0x0\",\"0x400780017fff8001\",\"0x0\",\"0x48127ffe7fff8000\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffc\",\"0x5\",\"0x480a7ffa7fff8000\",\"0x480a7ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x482680017ffc8000\",\"0x800000000000011000000000000000000000000000000000000000000000000\",\"0x40337fff7ffb8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffd7fff8000\",\"0x48317ffd80008000\",\"0x400080007ffd7ffe\",\"0x480080007ffc8000\",\"0x400080017ffc7fff\",\"0x482480017ffb8000\",\"0x1\",\"0x482480017ffb8000\",\"0x3\",\"0x480080027ffa8000\",\"0x20680017fff7ffb\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff8\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x480a7ffa7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480280007ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe2\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd5\",\"0x40137ffd7fff8000\",\"0x480280017ffb8000\",\"0x40297ffd7fff8001\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x480a7ffb7fff8000\",\"0x480280007ffc8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcd9\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc6\",\"0x40137ffd7fff8000\",\"0x480280017ffc8000\",\"0x402580017fff8001\",\"0x1\",\"0x48127ffb7fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffccb\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcc3\",\"0x40137fff7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x3c0ba99f1a18bcdc81fcbcb6b4f15a9a6725f937075aed6fac107ffcb147068\",\"0x4829800080008000\",\"0x480a80007fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd1b\",\"0x482480017fff8000\",\"0x1\",\"0x40307ffe7ffd7fff\",\"0x48127ffc7fff8000\",\"0x480a7ffc7fff8000\",\"0x480080007ffc8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcaf\",\"0x40137fff7fff8000\",\"0x4003800080007ffc\",\"0x400380007ffa7ffc\",\"0x402780017ffa8001\",\"0x1\",\"0x4826800180008000\",\"0x1\",\"0x40297ffc7fff8002\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcaa\",\"0x480a7ff97fff8000\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x79dc0da7c54b95f10aa182ad0a46400db63156920adb65eca2654c0945a463\",\"0x4829800080008002\",\"0x480a80007fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcfa\",\"0x48127ffd7fff8000\",\"0x480a80017fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc92\",\"0x40137fff7fff8000\",\"0x4003800080007ffc\",\"0x400380007ffa7ffc\",\"0x402780017ffa8001\",\"0x1\",\"0x4826800180008000\",\"0x1\",\"0x40297ffc7fff8002\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc8d\",\"0x480a7ff97fff8000\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x3ea3b9a8522d36784cb325f9c7e2ec3c9f3e6d63031a6c6b8743cc22412f604\",\"0x4829800080008002\",\"0x480a80007fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcdd\",\"0x48127ffd7fff8000\",\"0x480a80017fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x3fc801c47df4de8d5835f8bfd4d0b8823ba63e5a3f278086901402d680abfc\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcf3\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffced\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1ac8d354f2e793629cb233a16f10d13cf15b9c45bbc620577c8e1df95ede545\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc58\",\"0x480a7ffc7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc8a\",\"0x48127fe17fff8000\",\"0x48127ffd7fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffccb\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe2\",\"0x480a7ff97fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcc4\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x480680017fff8000\",\"0x5d2e9527cbeb1a51aa084b0de7501f343b7b1bf24a0c427d6204a7b7988970\",\"0x208b7fff7fff7ffe\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffa\",\"0x480a7ffb7fff8000\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcac\",\"0x48127ffe7fff8000\",\"0x48127ff57fff8000\",\"0x48127ff57fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed\",\"0x480a7ffa7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffca6\",\"0x48127ff67fff8000\",\"0x48127ff67fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc10\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x2e8a4ec40a36a027111fafdb6a46746ff1b0125d5067fbaebd8b5f227185a1e\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc0a\",\"0x40137fff7fff8001\",\"0x4003800080017ff9\",\"0x4003800180017ffa\",\"0x4003800280017ffb\",\"0x400380007ff87ffb\",\"0x402780017ff88002\",\"0x1\",\"0x4826800180018000\",\"0x3\",\"0x40297ffb7fff8003\",\"0x4826800180018000\",\"0x3\",\"0x480a7ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc03\",\"0x4003800080037ffd\",\"0x4826800180038000\",\"0x1\",\"0x480a7ff77fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc86\",\"0x480a80027fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbe9\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x3ef46b1f8c5c94765c1d63fb24422442ea26f49289a18ba89c4138ebf450f6c\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbe3\",\"0x40137fff7fff8001\",\"0x4003800080017ff9\",\"0x4003800180017ffa\",\"0x4003800280017ffb\",\"0x400380007ff87ffb\",\"0x402780017ff88002\",\"0x1\",\"0x4826800180018000\",\"0x3\",\"0x40297ffb7fff8003\",\"0x4826800180018000\",\"0x3\",\"0x480a7ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbdc\",\"0x4003800080037ffd\",\"0x4826800180038000\",\"0x1\",\"0x480a7ff77fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc5f\",\"0x480a80027fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x4\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbc2\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x1205ec81562fc65c367136bd2fe1c0fff2d1986f70e4ba365e5dd747bd08753\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbbc\",\"0x40137fff7fff8001\",\"0x4003800080017ffa\",\"0x4003800180017ffb\",\"0x4003800280017ffc\",\"0x400380007ff97ffc\",\"0x402780017ff98002\",\"0x1\",\"0x4826800180018000\",\"0x3\",\"0x40297ffc7fff8003\",\"0x4826800180018000\",\"0x3\",\"0x480a7ffd7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffbb5\",\"0x480a7ff87fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4829800180008003\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc3b\",\"0x480a80027fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x2\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb9e\",\"0x40137fff7fff8000\",\"0x480680017fff8000\",\"0x2c6e1be7705f64cd4ec61d51a0c8e64ceed5e787198bd3291469fb870578922\",\"0x4002800080007fff\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb98\",\"0x40137fff7fff8001\",\"0x4003800080017ffd\",\"0x4826800180018000\",\"0x1\",\"0x480a7ffb7fff8000\",\"0x480680017fff8000\",\"0x1\",\"0x480a80007fff8000\",\"0x4828800180007ffc\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc23\",\"0x480a7ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff5b\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x402b7ffd7ffc7ffd\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffee\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff77fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x1a7\",\"0x480a7ff67fff8000\",\"0x48127ffd7fff8000\",\"0x480a7ff87fff8000\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff14\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x1\",\"0x4003800080007ffc\",\"0x4826800180008000\",\"0x1\",\"0x480a7ffd7fff8000\",\"0x4828800080007ffe\",\"0x480a80007fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280027ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x3\",\"0x480280027ffd8000\",\"0x48307fff7ffe8000\",\"0x482480017fff8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480280027ffd8000\",\"0x482680017ffd8000\",\"0x3\",\"0x480080007ff68000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd4\",\"0x48127ffe7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe0\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x5\",\"0x480a7ff67fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe10\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb42\",\"0x48127ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffba7\",\"0x40137fff7fff8000\",\"0x48127ffe7fff8000\",\"0x48127ff47fff8000\",\"0x48127ff47fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb0\",\"0x40137fff7fff8001\",\"0x40137ffc7fff8002\",\"0x40137ffe7fff8003\",\"0x48127ffd7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x159\",\"0x480a80027fff8000\",\"0x48127ffd7fff8000\",\"0x480a80037fff8000\",\"0x48127ffc7fff8000\",\"0x482a800180008000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed3\",\"0x40137ffe7fff8004\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef4\",\"0x48127ffe7fff8000\",\"0x480a80047fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280027ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x3\",\"0x480280027ffd8000\",\"0x48307fff7ffe8000\",\"0x482480017fff8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480280027ffd8000\",\"0x482680017ffd8000\",\"0x3\",\"0x480080007ff68000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb9\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x3\",\"0x480a7ff67fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdbd\",\"0x40137ffd7fff8000\",\"0x40137fff7fff8001\",\"0x48127ffe7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x113\",\"0x480a80007fff8000\",\"0x48127ffd7fff8000\",\"0x480a80017fff8000\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe80\",\"0x20680017fff7fff\",\"0x6\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127fbf7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe80\",\"0x40137ffe7fff8002\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec8\",\"0x48127ffe7fff8000\",\"0x480a80027fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280027ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x3\",\"0x480280027ffd8000\",\"0x48307fff7ffe8000\",\"0x482480017fff8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480280027ffd8000\",\"0x482680017ffd8000\",\"0x3\",\"0x480080007ff68000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb9\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x9\",\"0x480a7ff67fff8000\",\"0x480a7ff77fff8000\",\"0x480a7ff87fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd6a\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb62\",\"0x40137fff7fff8000\",\"0x48127ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb01\",\"0x40137fff7fff8001\",\"0x40137ffe7fff8002\",\"0x48127ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0xba\",\"0x480a80027fff8000\",\"0x48127ffd7fff8000\",\"0x480a80007fff8000\",\"0x48127ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe27\",\"0x40137fff7fff8003\",\"0x480a80037fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffa85\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x48127ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee1\",\"0x40137fff7fff8004\",\"0x40137ffc7fff8005\",\"0x40137ffd7fff8006\",\"0x20780017fff8004\",\"0x5\",\"0x48127ffe7fff8000\",\"0x10780017fff7fff\",\"0x7\",\"0x48127ffe7fff8000\",\"0x480a80037fff8000\",\"0x480a80017fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffa82\",\"0x480a80057fff8000\",\"0x480a80067fff8000\",\"0x48127ffd7fff8000\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x8f\",\"0x40137ffe7fff8007\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe89\",\"0x48127ffe7fff8000\",\"0x480a80077fff8000\",\"0x48127ffd7fff8000\",\"0x480a7ffd7fff8000\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x6b\",\"0x40137ffe7fff8008\",\"0x20780017fff7ffa\",\"0x4\",\"0x10780017fff7fff\",\"0xd\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffda6\",\"0x48127ffe7fff8000\",\"0x480a80087fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd6c\",\"0x20680017fff7fff\",\"0xd\",\"0x48127ffd7fff8000\",\"0x48127ffd7fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd77\",\"0x48127ffe7fff8000\",\"0x480a80087fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x48127ffd7fff8000\",\"0x480a80087fff8000\",\"0x48127ffc7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280027ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x3\",\"0x480280027ffd8000\",\"0x48307fff7ffe8000\",\"0x482480017fff8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x480280017ffd8000\",\"0x480280027ffd8000\",\"0x482680017ffd8000\",\"0x3\",\"0x480080007ff68000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7d\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480680017fff8000\",\"0x1\",\"0x400680017fff7fff\",\"0x0\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x400080007ffe7fff\",\"0x482680017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x48307fff7ffe8000\",\"0x402a7ffd7ffc7fff\",\"0x480280027ffb8000\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x482480017ffd8000\",\"0x1\",\"0x480280007ffd8000\",\"0x482680017ffd8000\",\"0x1\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe9\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x20780017fff7ffc\",\"0x6\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffab9\",\"0x48127ffd7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe2d\",\"0x48127ffe7fff8000\",\"0x48127fe47fff8000\",\"0x48127ffd7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffca6\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffda3\",\"0x208b7fff7fff7ffe\",\"0x40780017fff7fff\",\"0x0\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcae\",\"0x480a7ff87fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ff97fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcdc\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcd9\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcd6\",\"0x480a7ffc7fff8000\",\"0x480a7ffb7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcc2\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffccf\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcdd\",\"0x208b7fff7fff7ffe\",\"0x480a7ffa7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd3c\",\"0x208b7fff7fff7ffe\",\"0x482680017ffd8000\",\"0x1\",\"0x402a7ffd7ffc7fff\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480280007ffd8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe01\",\"0x48127ffc7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff9e2\",\"0x48127ffd7fff8000\",\"0x48127ff17fff8000\",\"0x48127ff17fff8000\",\"0x48127ffb7fff8000\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe9\",\"0x208b7fff7fff7ffe\",\"0x480a7ff87fff8000\",\"0x480a7ff97fff8000\",\"0x480a7ffa7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffde6\",\"0x48127ffc7fff8000\",\"0x48127ffe7fff8000\",\"0x480a7ffb7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff9d3\",\"0x48127ffd7fff8000\",\"0x48127ff17fff8000\",\"0x48127ff17fff8000\",\"0x208b7fff7fff7ffe\",\"0x480280007ffb8000\",\"0x480280017ffb8000\",\"0x480280027ffb8000\",\"0x480a7ffa7fff8000\",\"0x480a7ffc7fff8000\",\"0x480a7ffd7fff8000\",\"0x1104800180018000\",\"0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffeb\",\"0x40780017fff7fff\",\"0x1\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x48127ffc7fff8000\",\"0x480680017fff8000\",\"0x0\",\"0x48127ffb7fff8000\",\"0x208b7fff7fff7ffe\"]}"
  },
  {
    "path": "contract-artifacts/Token/ERC20.cairo/ERC20_abi.json",
    "content": "[{\"members\":[{\"name\":\"low\",\"offset\":0,\"type\":\"felt\"},{\"name\":\"high\",\"offset\":1,\"type\":\"felt\"}],\"name\":\"Uint256\",\"size\":2,\"type\":\"struct\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"felt\"},{\"name\":\"symbol\",\"type\":\"felt\"},{\"name\":\"recipient\",\"type\":\"felt\"}],\"name\":\"constructor\",\"outputs\":[],\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"name\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"symbol\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"totalSupply\",\"type\":\"Uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"decimals\",\"type\":\"felt\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"account\",\"type\":\"felt\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"Uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"owner\",\"type\":\"felt\"},{\"name\":\"spender\",\"type\":\"felt\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"Uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"recipient\",\"type\":\"felt\"},{\"name\":\"amount\",\"type\":\"Uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"sender\",\"type\":\"felt\"},{\"name\":\"recipient\",\"type\":\"felt\"},{\"name\":\"amount\",\"type\":\"Uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"spender\",\"type\":\"felt\"},{\"name\":\"amount\",\"type\":\"Uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"spender\",\"type\":\"felt\"},{\"name\":\"added_value\",\"type\":\"Uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"spender\",\"type\":\"felt\"},{\"name\":\"subtracted_value\",\"type\":\"Uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"success\",\"type\":\"felt\"}],\"type\":\"function\"},{\"inputs\":[{\"name\":\"recipient\",\"type\":\"felt\"},{\"name\":\"amount\",\"type\":\"Uint256\"}],\"name\":\"mint\",\"outputs\":[],\"type\":\"function\"},{\"inputs\":[{\"name\":\"user\",\"type\":\"felt\"},{\"name\":\"amount\",\"type\":\"Uint256\"}],\"name\":\"burn\",\"outputs\":[],\"type\":\"function\"}]"
  },
  {
    "path": "hardhat.config.ts",
    "content": "/* This config file is used for running mocha tests in this repository, and not on the example repository */\n\nimport \"./dist/src/index\";\n\nmodule.exports = {};\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"name\": \"@shardlabs/starknet-hardhat-plugin\",\n    \"version\": \"0.8.0-alpha.5\",\n    \"description\": \"Plugin for using Starknet tools within Hardhat projects\",\n    \"main\": \"dist/src/index.js\",\n    \"files\": [\n        \"dist\"\n    ],\n    \"keywords\": [\n        \"starknet\",\n        \"hardhat\",\n        \"plugin\",\n        \"starkware\",\n        \"cairo\",\n        \"compile\",\n        \"deploy\",\n        \"test\"\n    ],\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/0xSpaceShard/starknet-hardhat-plugin.git\"\n    },\n    \"scripts\": {\n        \"test-configuration-tests\": \"TEST_SUBDIR=configuration-tests ./scripts/test.sh\",\n        \"test-general-tests\": \"TEST_SUBDIR=general-tests ./scripts/test.sh\",\n        \"test-venv-tests\": \"TEST_SUBDIR=venv-tests ./scripts/test.sh\",\n        \"test-integrated-devnet-tests\": \"TEST_SUBDIR=integrated-devnet-tests ./scripts/test.sh\",\n        \"test-recompilation-tests\": \"TEST_SUBDIR=recompilation-tests ./scripts/test.sh\",\n        \"test-dev\": \"./scripts/test-dev.sh\",\n        \"build\": \"rm -rf dist && tsc && npm run copy-files\",\n        \"copy-files\": \"cp src/*.py dist/src/\",\n        \"lint\": \"eslint $(git ls-files '*.ts')\",\n        \"format\": \"prettier-eslint --list-different --write $(git ls-files '*.ts' '*.js')\"\n    },\n    \"author\": \"SpaceShard\",\n    \"license\": \"MIT\",\n    \"dependencies\": {\n        \"@iarna/toml\": \"^2.2.5\",\n        \"@nomiclabs/hardhat-docker\": \"^2.0.2\",\n        \"axios\": \"^1.6.5\",\n        \"axios-retry\": \"^3.9.1\",\n        \"exit-hook\": \"2.2.1\",\n        \"form-data\": \"^4.0.0\",\n        \"glob\": \"^10.3.10\",\n        \"shelljs\": \"^0.8.5\",\n        \"starknet\": \"~5.19.3\",\n        \"tar-fs\": \"^3.0.4\"\n    },\n    \"peerDependencies\": {\n        \"hardhat\": \"^2.14.0\"\n    },\n    \"devDependencies\": {\n        \"@types/chai\": \"^4.3.0\",\n        \"@types/elliptic\": \"^6.4.14\",\n        \"@types/glob\": \"^8.0.0\",\n        \"@types/mocha\": \"^10.0.0\",\n        \"@types/node\": \"^18.0.0\",\n        \"@types/shelljs\": \"^0.8.11\",\n        \"@types/tar-fs\": \"^2.0.1\",\n        \"@typescript-eslint/eslint-plugin\": \"^5.8.1\",\n        \"@typescript-eslint/parser\": \"^5.8.1\",\n        \"chai\": \"^4.3.7\",\n        \"eslint\": \"^8.5.0\",\n        \"hardhat\": \"^2.19.4\",\n        \"mocha\": \"^10.0.0\",\n        \"prettier-eslint-cli\": \"^7.0.0\",\n        \"ts-node\": \"^10.4.0\",\n        \"typescript\": \"^5.0.0\"\n    }\n}\n"
  },
  {
    "path": "scripts/devnet-restart.sh",
    "content": "#!/bin/bash\nHOST=127.0.0.1\nPORT=5050\n\necho \"Emptying state on Devnet at $HOST:$PORT\"\n\ncurl -X POST \"http://$HOST:$PORT/restart\"\n"
  },
  {
    "path": "scripts/devnet-run.sh",
    "content": "#!/bin/bash\n\n# This script starts devnet in background and checks until it is responsive.\n# Outputs the PID of the bg process.\n\nset -eu\n\nHOST=127.0.0.1\nPORT=5050\n\nif [[ -n \"${STARKNET_HARDHAT_DEV:-}\" ]]; then\n    echo \"Running dockerized Devnet...\"\n    # Get default from config.json file\n    # We may be inside example dir or main plugin dir\n    # This script needs to be generic and work in both cases\n    if [[ -e \"./config.json\" ]]; then\n        STARKNET_DEVNET_DEFAULT=$(node -e \"console.log(require('./config.json').STARKNET_DEVNET)\")\n    else\n        STARKNET_DEVNET_DEFAULT=$(node -e \"console.log(require('../config.json').STARKNET_DEVNET)\")\n    fi\n\n    STARKNET_DEVNET=\"${STARKNET_DEVNET:=$STARKNET_DEVNET_DEFAULT}\"\n    docker pull -q shardlabs/starknet-devnet:$STARKNET_DEVNET\n    container_id=$(docker run --rm --name starknet_hardhat_devnet -d -p 0.0.0.0:$PORT:$PORT shardlabs/starknet-devnet --seed 42)\n    echo \"Running devnet in container starknet_hardhat_devnet $container_id\"\n\nelse\n    starknet-devnet --host $HOST --port $PORT --seed 42 >/dev/null 2>&1 &\n    echo \"Spawned devnet with PID $!\"\nfi\n\n# Display the fact that devnet is loading by rotating a straight line |\nloading_chars=(\"|\" \"/\" \"-\" \"\\\\\")\ntotal_loading_chars=${#loading_chars[@]}\n\nsleep 1\nMAX_WAIT=35 # seconds\nfor ((i = 0; i < $MAX_WAIT; i++)); do\n    loading_char_i=$((i % total_loading_chars))\n    loading_char=${loading_chars[$loading_char_i]}\"\"\n    echo -ne \"\\r Spawning Devnet $loading_char\"\n\n    if is_alive=$(curl -s -w \"\\n\" \"http://$HOST:$PORT/is_alive\"); then\n        echo \"\"\n        echo \"$is_alive\"\n        break\n    else\n        sleep 1\n    fi\ndone\n\nif [[ $i -ge \"$MAX_WAIT\" ]]; then\n    echo \"Failed to run devnet :(\"\n    exit 1\nfi\n"
  },
  {
    "path": "scripts/devnet-stop.sh",
    "content": "#!/bin/bash\n\nif [[ -n \"${STARKNET_HARDHAT_DEV:-}\" ]]; then\n    # Stop docker devnet container\n    docker rm -f starknet_hardhat_devnet\nelse\n    # Kill devnet process\n    # specifying signal for pkill fails on mac\n    pkill -f starknet-devnet\nfi\n"
  },
  {
    "path": "scripts/ensure-python.sh",
    "content": "#!/bin/bash\n\n# Ensures that pyenv uses the desired Python version (on Linux).\n\nset -eu\n\nPY_VERSION=3.9.10\n\nif [[ \"$OSTYPE\" == \"linux-gnu\"* ]]; then\n    which \"/opt/circleci/.pyenv/versions/$PY_VERSION/bin/python\" || pyenv install \"$PY_VERSION\"\n    pyenv global \"$PY_VERSION\"\nfi\n\nif [[ \"$OSTYPE\" == \"darwin\"* ]]; then\n    which \"/Users/distiller/.pyenv/versions/$PY_VERSION/bin/python\" || pyenv install \"$PY_VERSION\"\n    pyenv global \"$PY_VERSION\"\nfi\n"
  },
  {
    "path": "scripts/install-devnet.sh",
    "content": "#!/bin/bash\n\nset -eu\n\npip3 install \"starknet-devnet==$STARKNET_DEVNET\"\nSTARKNET_DEVNET_PATH=$(which starknet-devnet)\necho \"starknet-devnet at: $STARKNET_DEVNET_PATH\"\n"
  },
  {
    "path": "scripts/npm-publish.sh",
    "content": "#!/bin/bash\nset -eu\n\nLOCAL_VERSION=$(jq -r \".version\" package.json)\nNPM_VERSION=$(npm view @shardlabs/starknet-hardhat-plugin dist-tags.latest)\n\nif [ $LOCAL_VERSION = $NPM_VERSION ]; then\n  echo \"Latest npm version is equal to current package version. Up the version to publish to npm.\"\nelse\n  npm ci\n  npm run build\n  # NPM access token: https://docs.npmjs.com/creating-and-viewing-access-tokens\n  npm config set //registry.npmjs.org/:_authToken=${NPM_TOKEN}\n  npm publish --verbose --access=public\n\n  # publish docs\n  cd www && npm ci\n\n  git config --global user.email \"$GIT_USER@users.noreply.github.com\"\n  git config --global user.name \"$GIT_USER\"\n  echo \"machine github.com login $GIT_USER password $GITHUB_TOKEN\" >~/.netrc\n\n  # skip ci to avoid gh-pages erroring on circleci\n  LATEST_COMMIT_HASH=$(git rev-parse HEAD)\n  CUSTOM_COMMIT_MESSAGE=\"Deploy website - based on $LATEST_COMMIT_HASH [skip ci]\" \\\n    npm run deploy\nfi\n"
  },
  {
    "path": "scripts/set-alpha-vars.sh",
    "content": "#!/bin/bash\n\nset -u\n\nexport OZ_ACCOUNT_ADDRESS=$OZ_ACCOUNT_ADDRESS_ALPHA\nexport OZ_ACCOUNT_PRIVATE_KEY=$OZ_ACCOUNT_PRIVATE_KEY_ALPHA\n\nexport ARGENT_ACCOUNT_ADDRESS=$ARGENT_ACCOUNT_ADDRESS_ALPHA\nexport ARGENT_ACCOUNT_PRIVATE_KEY=$ARGENT_ACCOUNT_PRIVATE_KEY_ALPHA\n"
  },
  {
    "path": "scripts/set-devnet-vars.sh",
    "content": "#!/bin/bash\n\nset -u\n\nexport OZ_ACCOUNT_ADDRESS=0x347be35996a21f6bf0623e75dbce52baba918ad5ae8d83b6f416045ab22961a\nexport OZ_ACCOUNT_PRIVATE_KEY=0xbdd640fb06671ad11c80317fa3b1799d\n"
  },
  {
    "path": "scripts/setup-compiler.sh",
    "content": "#!/bin/bash\n\nset -eu\n\nCAIRO_COMPILER_TARGET_TAG=$CAIRO_COMPILER\necho \"Installing cairo compiler $CAIRO_COMPILER_TARGET_TAG\"\n\nCAIRO_COMPILER_ASSET_NAME=\"release-x86_64-unknown-linux-musl.tar.gz\"\n\nif [[ \"$OSTYPE\" == \"darwin\"* ]]; then\n    CAIRO_COMPILER_ASSET_NAME=\"release-aarch64-apple-darwin.tar\"\nfi\n\n# Download compiler asset\nCOMPILER_BINARY_URL=\"https://github.com/starkware-libs/cairo/releases/download/v$CAIRO_COMPILER_TARGET_TAG/$CAIRO_COMPILER_ASSET_NAME\"\necho \"Downloading $COMPILER_BINARY_URL\"\ncurl --location -O \"$COMPILER_BINARY_URL\"\n\n# Unpack and remove archive\ntar -zxvf \"$CAIRO_COMPILER_ASSET_NAME\"\nrm -rf \"$CAIRO_COMPILER_ASSET_NAME\"\n\n# For verification and future use\n# Using absolute path to make it usable everywhere\nexport CAIRO_1_COMPILER_DIR=$(readlink -f \"cairo/bin\")\n\n# Verify\necho \"Verifying compiler binaries\"\n$CAIRO_1_COMPILER_DIR/starknet-compile --version\n$CAIRO_1_COMPILER_DIR/starknet-sierra-compile --version\n"
  },
  {
    "path": "scripts/setup-venv.sh",
    "content": "#!/bin/bash\n\nset -eu\n\nVENV=../my-venv\n\necho \"Creating venv $(pwd)/$VENV\"\npython3 -m venv \"$VENV\"\nsource \"$VENV/bin/activate\"\necho \"python at: $(which python)\"\necho \"python version: $(python --version)\"\n\nif [[ \"$OSTYPE\" == \"darwin\"* ]]; then\n    export HOMEBREW_NO_INSTALL_CLEANUP=1\n    brew ls --versions gmp || brew install gmp\n    GMP_VERSION=$(brew ls --versions gmp)\n    GMP_VERSION=(${GMP_VERSION// / }) # Splitting by space from \"gmp 6.2.1_1\"\n    GMP_VERSION=${GMP_VERSION[1]} # Take only the version\n    GMP_DIR=$(brew --prefix gmp)/$GMP_VERSION\n    echo \"$GMP_DIR\"\n    CFLAGS=-I$GMP_DIR/include LDFLAGS=-L$GMP_DIR/lib pip3 install fastecdsa\nfi\n\nif [ \"$TEST_SUBDIR\" == \"venv-tests\" ]; then\n    which \"$VENV/bin/starknet\" || pip3 install cairo-lang==\"$(cat /tmp/cairo-lang-version)\"\n    echo \"starknet at: $(which starknet)\"\n    echo \"starknet version: $(starknet --version)\"\nfi\n"
  },
  {
    "path": "scripts/test-dev.sh",
    "content": "#!/bin/bash\n\nDEVNET_CONTAINER_NAME=\"starknet_hardhat_devnet\"\n\n# shut down container on exit\ntrap \"\n    echo 'Stopping Devnet'\n    docker rm -f $DEVNET_CONTAINER_NAME\n\" EXIT\n\n# Flag: dev mode for testing (and not usual CI)\nexport STARKNET_HARDHAT_DEV=1\nexport STARKNET_HARDHAT_DEV_NETWORK=\"integrated-devnet\"\n\ncd test\n\n# Loops until a suitable TEST_SUBDIR is provided\nTEST_SUBDIR_PENDING=\"true\"\nwhile [[ -n $TEST_SUBDIR_PENDING ]]; do\n    echo \"(Tab to autocomplete)\"\n    read -e -p \"Test suite: \" TEST_SUBDIR\n    TEST_SUBDIR=\"${TEST_SUBDIR%/}\"\n\n    if [[ -d $TEST_SUBDIR ]]; then\n        if [[ $TEST_SUBDIR != \"${TEST_SUBDIR%-tests}\" ]]; then\n            TEST_SUBDIR_PENDING=\"\"\n        fi\n    else\n        echo \"\"\n        echo \"Please pick from,\"\n        ls | grep '\\-tests' | awk '{print \" - \"$1}'\n        echo \"\"\n    fi\ndone\n\nTEST_SUBDIR=\"${TEST_SUBDIR%/}\" # remove trailing slash\n\ncd $TEST_SUBDIR\n\n# Loops until a suitable test_name is provided\nTEST_NAME_PENDING=\"true\"\nwhile [[ -n $TEST_NAME_PENDING ]]; do\n    echo \"\"\n    echo \"(Tab to autocomplete)\"\n    read -e -p \"Test: \" test_name\n    test_name=\"${test_name%/}\"\n\n    if [[ -d $test_name ]]; then\n        echo \"Running test $test_name from $TEST_SUBDIR\"\n        TEST_NAME_PENDING=\"\"\n    else\n        echo \"Please pick from,\"\n        ls | awk '{print \" - \"$1}'\n        echo \"\"\n    fi\ndone\n\ncd ../..\n\ntest_name=\"${test_name%/}\" # remove trailing slash\nRUN_SETUP=\"y\"\nCONFIG_FILE_NAME=\"hardhat.config.ts\"\n\nif [[ -d starknet-hardhat-example/ ]]; then\n    echo \"\"\n    read -e -p \"Example repo found, y to force run setup: \" RUN_SETUP\nfi\n\nif [[ \"y\" == \"$RUN_SETUP\" ]]; then\n    echo \"\"\n    source ./scripts/setup-compilers.sh\n    rm -rf starknet-hardhat-example\n    git clone -b \"${EXAMPLE_REPO_BRANCH:=plugin}\" --single-branch https://github.com/0xSpaceShard/starknet-hardhat-example.git\n    cd starknet-hardhat-example\n    npm ci\n    npm install ../ # install plugin from source (parent dir)\n    cd ..\nelse\n    echo \"Skipped setup.\"\nfi\n\npwd\n\necho \"\"\necho \"If your test needs devnet (and not integrated-devnet),\"\nread -e -p \"y to run devnet: \" RUN_DEVNET\n\nif [[ \"y\" == \"$RUN_DEVNET\" ]]; then\n    export STARKNET_HARDHAT_DEV_NETWORK=\"devnet\"\n    ./scripts/devnet-run.sh\n    echo \"\"\n    echo \"Devnet running, to stop devnet use:\"\n    echo \"+--------------------------------------+\"\n    echo \"| docker rm -f $DEVNET_CONTAINER_NAME |\"\n    echo \"+--------------------------------------+\"\nfi\n\nwhile [[ \"y\" = \"${CONTINUE_TESTING:-y}\" ]]; do\n    echo \"\"\n    echo \"Loading your latest code changes\"\n    cd starknet-hardhat-example\n    npm install ../ # install plugin from source (parent dir)\n    cd ..\n\n    echo \"\"\n    TEST_SUBDIR=$TEST_SUBDIR ./scripts/test.sh $test_name\n    echo \"\"\n    echo \"----------------------------------------------\"\n    echo \"\"\n    read -e -p \"Re-run the test? (Y/n) \" CONTINUE_TESTING\ndone\n"
  },
  {
    "path": "scripts/test-setup.sh",
    "content": "#!/bin/bash\n\nset -eu\nset -o pipefail\n\ntrap 'for killable in $(jobs -p); do kill -9 $killable; done' EXIT\n\n# log versions\n./scripts/versions.sh\n\n./scripts/ensure-python.sh\n\n# setup example repo\nrm -rf starknet-hardhat-example\nEXAMPLE_REPO_BRANCH=\"plugin\"\nif [[ \"$CIRCLE_BRANCH\" == \"master\" ]] && [[ \"$EXAMPLE_REPO_BRANCH\" != \"plugin\" ]]; then\n    # prevents using starknet-hardhat-example branch other than \"plugin\" when starknet-hardhat-plugin PRs are merged\n    echo \"Invalid example repo branch: $EXAMPLE_REPO_BRANCH\"\n    exit 1\nfi\n\ngit clone -b \"$EXAMPLE_REPO_BRANCH\" --single-branch git@github.com:0xSpaceShard/starknet-hardhat-example.git\ncd starknet-hardhat-example\ngit log -n 1\nnpm ci\nnpm install ../ # install plugin from source (parent dir)\n\n# if docker is available on the system pull docker image\nCAIRO_CLI_DOCKER_REPOSITORY_WITH_TAG=$(node -e \"console.log(require('../dist/src/constants.js').CAIRO_CLI_DOCKER_REPOSITORY_WITH_TAG)\")\n\nif docker --version >/dev/null 2>&1; then\n    docker pull \"$CAIRO_CLI_DOCKER_REPOSITORY_WITH_TAG\"\nfi\n\n# used by some cases\n../scripts/setup-venv.sh\n\n# install scarb\nSCARB_VERSION=$(jq -r \".SCARB_VERSION\" ../config.json)\ncurl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | bash -s -- -v \"$SCARB_VERSION\"\n"
  },
  {
    "path": "scripts/test.sh",
    "content": "#!/bin/bash\nset -eu\n\nCONFIG_FILE_NAME=\"hardhat.config.ts\"\nif [[ -z \"${STARKNET_HARDHAT_DEV:-}\" ]]; then\n    ./scripts/test-setup.sh\n    ./scripts/install-devnet.sh\nfi\nsource ./scripts/setup-compiler.sh\n\ncd ./starknet-hardhat-example\n\ntotal=0\nsuccess=0\n\ntest_dir=\"../test/$TEST_SUBDIR\"\ntest_name_specified=${1:-}\n\nif [ ! -d \"$test_dir\" ]; then\n    echo \"Invalid test directory: $test_dir\"\n    exit -1\nfi\n\nfunction run_test() {\n    test_case=\"$1\"\n    network=\"$2\"\n    test_name=$(basename $test_case)\n\n    network_file=\"$test_case/network.json\"\n\n    [ \"$network\" == \"devnet\" ] && ../scripts/devnet-restart.sh\n\n    if [[ ! -f \"$network_file\" ]]; then\n        echo \"Test failed! Error: No network file provided!\"\n        total=$((total + 1))\n        return 0\n    fi\n\n    # Skip if the network file doesn't specify to run the test on the current network\n    if [[ $(jq .[\\\"\"$network\"\\\"] \"$network_file\") != true ]]; then\n        echo \"Skipping $network test for $test_name\"\n        return 0\n    fi\n\n    total=$((total + 1))\n    echo \"Test $total) $test_name\"\n\n    config_file_path=\"$test_case/$CONFIG_FILE_NAME\"\n    if [ ! -f \"$config_file_path\" ]; then\n        echo \"Test failed! Error: No config file provided!\"\n        return 0\n    fi\n\n    # replace the dummy config (CONFIG_FILE_NAME) with the one used by this test\n    /bin/cp \"$config_file_path\" \"$CONFIG_FILE_NAME\"\n    # Validate config file\n    if npx hardhat --typecheck --config \"$CONFIG_FILE_NAME\" 1>/dev/null; then\n        echo \"Config file is valid\"\n    else\n        echo \"Invalid config! Test failed!\"\n        # Clean up the temporary config file\n        rm \"$CONFIG_FILE_NAME\"\n        return 0\n    fi\n\n    # check if test_case/check.ts exists\n    if [ -f \"$test_case/check.ts\" ]; then\n        # run the test\n        NETWORK=\"$network\" npx ts-node \"$test_case/check.ts\" && success=$((success + 1)) || echo \"Test failed!\"\n    else\n        echo \"Error: $test_case/check.ts not found\"\n    fi\n\n    rm -rf starknet-artifacts\n    git checkout --force\n    git clean -fd\n\n    echo \"----------------------------------------------\"\n    echo\n}\n\nfunction iterate_dir() {\n    network=\"$1\"\n    echo \"Starting tests on $network\"\n\n    [ \"$network\" == \"devnet\" ] && ../scripts/devnet-run.sh\n\n    if [[ -n $test_name_specified ]]; then\n        test_case_dir=\"$test_dir/$test_name_specified\"\n        if [ ! -d \"$test_case_dir\" ]; then\n            echo \"Invalid directory $test_case_dir for test case $test_name_specified\"\n            exit -1\n        fi\n\n        run_test $test_case_dir $network\n    else\n        for test_case in \"$test_dir\"/*; do\n            run_test $test_case $network\n        done\n    fi\n\n    [ \"$network\" == \"devnet\" ] && ../scripts/devnet-stop.sh && sleep 5\n\n    echo \"Finished tests on $network\"\n}\n\n# perform tests on Alpha-goerli testnet only on master branch and in a linux environment\n# skip testing on testnet if [skip testnet] included in commit message\nlatest_commit_msg=$(git log -1 --pretty=%B)\nif [[ \"${CIRCLE_BRANCH:=}\" == \"master\" ]] &&\n    [[ \"$OSTYPE\" == \"linux-gnu\"* ]] &&\n    [[ \"$latest_commit_msg\" != *\"[skip testnet]\"* ]]; then\n    source ../scripts/set-alpha-vars.sh\n    iterate_dir alpha\nfi\n\nsource ../scripts/set-devnet-vars.sh\n\nif [[ -n \"${STARKNET_HARDHAT_DEV:-}\" ]]; then\n    test_case_dir=\"$test_dir/$test_name_specified\"\n    if [ ! -d \"$test_case_dir\" ]; then\n        echo \"Invalid directory $test_case_dir for test case $test_name_specified\"\n        exit -1\n    fi\n\n    # Run test for all networks\n    run_test $test_case_dir $STARKNET_HARDHAT_DEV_NETWORK\nelse\n    # test integrated devnet\n    iterate_dir integrated-devnet\n\n    iterate_dir devnet\nfi\n\necho \"Tests passing: $success / $total\"\nexit $((total - success))\n"
  },
  {
    "path": "scripts/update-oz-account.sh",
    "content": "#!/bin/bash\n\nset -eu\n\nVERSION=\"$1\" # e.g. 0.5.1\nGIT_VERSION=\"v$VERSION\"\n\n# create a venv\nrm -rf tmp-venv\npython3.9 -m venv tmp-venv\nsource tmp-venv/bin/activate\n\n# create a tmp OZ repo\nTMP_REPO=\"tmp-cairo-contracts\" \nrm -rf \"$TMP_REPO\"\nmkdir \"$TMP_REPO\" && cd \"$TMP_REPO\"\ngit clone https://github.com/OpenZeppelin/cairo-contracts/ .\ngit checkout \"$GIT_VERSION\"\n\n# install prerequisite\npip install cairo-nile && nile init\n\n# compile the contract\nnile compile src/openzeppelin/account/presets/Account.cairo --cairo_path src\n\n# return to project root so that tmp repo can be deleted\ncd ..\n\ncp_target=\"contract-artifacts/OpenZeppelinAccount/$VERSION/Account.cairo/\"\nmkdir -p \"$cp_target\"\ncp \"$TMP_REPO/artifacts/Account.json\" \"$cp_target/Account.json\"\ncp \"$TMP_REPO/artifacts/abis/Account.json\" \"$cp_target/Account_abi.json\"\n\nrm -rf \"$TMP_REPO\"\ndeactivate && rm -rf tmp-venv\n\n# Remove debug_info from the artifact and minify\n# Update directory/file names containing the version\n# Adapt to ABI changes\n# Update expected test paths and addresses\n# Update docs\n"
  },
  {
    "path": "scripts/versions.sh",
    "content": "#!/bin/bash\n\n# Logs used versions\n\nset -eu\n\necho \"node: $(node --version)\"\necho \"npm: $(npm --version)\"\n\n#these two commands may return different versions (e.g. if using circleci/node and remote docker)\necho \"docker --version: $(docker --version)\"\necho \"docker version: $(docker version)\"\n\necho \"python3: $(python3 --version)\"\necho \"pip3: $(pip3 --version)\"\n"
  },
  {
    "path": "src/account-utils.ts",
    "content": "import axios, { AxiosError } from \"axios\";\nimport { HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { ec, hash, stark } from \"starknet\";\n\nimport {\n    ABI_SUFFIX,\n    INTERNAL_ARTIFACTS_DIR,\n    TransactionHashPrefix,\n    TRANSACTION_VERSION,\n    StarknetChainId\n} from \"./constants\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport * as starknet from \"./starknet-types\";\nimport {\n    Cairo1ContractClass,\n    iterativelyCheckStatus,\n    Numeric,\n    StarknetContract,\n    StringMap\n} from \"./types\";\nimport { numericToHexString } from \"./utils\";\n\nexport type CallParameters = {\n    toContract: StarknetContract;\n    functionName: string;\n    calldata?: StringMap;\n};\n\ntype KeysType = {\n    publicKey: string;\n    privateKey: string;\n};\n\nexport function signMultiCall(messageHash: string, privateKey: string): bigint[] {\n    const publicKey = ec.starkCurve.getStarkKey(privateKey);\n    if (publicKey === \"0x0\") {\n        return [BigInt(0), BigInt(0)];\n    }\n    const signature = ec.starkCurve.sign(BigInt(messageHash).toString(16), privateKey);\n    return [signature.r, signature.s];\n}\n\n/**\n * Move from an internal directory to the user's artifacts.\n * @param contractDir the subdirectory internally holding the artifact\n * @returns the new path where the artifacts can be found\n */\nexport function handleInternalContractArtifacts(\n    contractDir: string,\n    contractName: string,\n    artifactsVersion: string,\n    hre: HardhatRuntimeEnvironment\n): string {\n    // Name of the artifacts' parent folder\n    const artifactsBase = contractName + \".cairo\";\n\n    const baseArtifactsPath = path.join(hre.config.paths.starknetArtifacts, INTERNAL_ARTIFACTS_DIR);\n\n    // Full path to where the artifacts will be saved\n    const artifactsTargetPath = path.join(\n        baseArtifactsPath,\n        contractDir,\n        artifactsVersion,\n        artifactsBase\n    );\n\n    const jsonArtifact = contractName + \".json\";\n    const abiArtifact = contractName + ABI_SUFFIX;\n\n    const artifactsSourcePath = path.join(\n        __dirname,\n        \"..\", // necessary since artifact dir is in the root, not in src\n        INTERNAL_ARTIFACTS_DIR,\n        contractDir,\n        artifactsVersion,\n        artifactsBase\n    );\n\n    ensureArtifact(jsonArtifact, artifactsTargetPath, artifactsSourcePath);\n    ensureArtifact(abiArtifact, artifactsTargetPath, artifactsSourcePath);\n\n    return artifactsTargetPath;\n}\n\n/**\n * Checks if the provided artifact exists in the project's artifacts folder.\n * If it doesn't exist, it is downloaded from the GitHub repository.\n * @param fileName artifact file to download. E.g. \"Account.json\" or \"Account_abi.json\"\n * @param artifactsTargetPath folder to where the artifacts will be downloaded. E.g. \"project/starknet-artifacts/Account.cairo\"\n * @param artifactSourcePath path to the folder where the artifacts are stored\n */\nfunction ensureArtifact(fileName: string, artifactsTargetPath: string, artifactSourcePath: string) {\n    const finalTargetPath = path.join(artifactsTargetPath, fileName);\n    if (!fs.existsSync(finalTargetPath)) {\n        fs.mkdirSync(artifactsTargetPath, { recursive: true });\n\n        const finalSourcePath = path.join(artifactSourcePath, fileName);\n        fs.copyFileSync(finalSourcePath, finalTargetPath);\n    }\n}\n\n/**\n * If no privateKey provided, generates random values, otherwise calculates from the\n * provided key.\n * @param providedPrivateKey hex string private key to use for generating the public key\n * @returns an object with public, private key and key pair\n */\nexport function generateKeys(providedPrivateKey?: string): KeysType {\n    const privateKey = providedPrivateKey ?? stark.randomAddress();\n    const publicKey = ec.starkCurve.getStarkKey(privateKey);\n    return { publicKey, privateKey };\n}\n\nconst INITIAL_NONCE = \"0x0\";\n\nexport function calculateDeployAccountHash(\n    accountAddress: string,\n    constructorCalldata: string[],\n    salt: string,\n    classHash: string,\n    maxFee: string,\n    chainId: StarknetChainId\n) {\n    const calldataHash = hash.computeHashOnElements([classHash, salt, ...constructorCalldata]);\n    return hash.computeHashOnElements([\n        TransactionHashPrefix.DEPLOY_ACCOUNT,\n        numericToHexString(TRANSACTION_VERSION),\n        accountAddress,\n        0, // entrypoint selector is implied\n        calldataHash,\n        maxFee,\n        chainId,\n        INITIAL_NONCE\n    ]);\n}\n\nexport async function sendDeployAccountTx(\n    signatures: string[],\n    classHash: string,\n    constructorCalldata: string[],\n    salt: string,\n    maxFee: string\n) {\n    const hre = await import(\"hardhat\");\n    const resp = await axios\n        .post(`${hre.starknet.networkConfig.url}/gateway/add_transaction`, {\n            max_fee: maxFee,\n            signature: signatures,\n            nonce: INITIAL_NONCE,\n            class_hash: classHash,\n            contract_address_salt: salt,\n            constructor_calldata: constructorCalldata,\n            version: numericToHexString(TRANSACTION_VERSION),\n            type: \"DEPLOY_ACCOUNT\"\n        })\n        .catch((error: AxiosError<starknet.StarkError>) => {\n            const msg = `Deploying account failed: ${error.response.data.message}`;\n            throw new StarknetPluginError(msg, error);\n        });\n\n    return new Promise<string>((resolve, reject) => {\n        iterativelyCheckStatus(\n            resp.data.transaction_hash,\n            hre.starknetWrapper,\n            () => resolve(resp.data.transaction_hash),\n            reject\n        );\n    });\n}\n\nexport async function sendDeclareV2Tx(\n    signatures: string[],\n    compiledClassHash: string,\n    maxFee: Numeric,\n    senderAddress: string,\n    version: Numeric,\n    nonce: Numeric,\n    contractClass: Cairo1ContractClass\n) {\n    const hre = await import(\"hardhat\");\n    const resp = await axios\n        .post(`${hre.starknet.networkConfig.url}/gateway/add_transaction`, {\n            type: \"DECLARE\",\n            contract_class: contractClass.getCompiledClass(),\n            signature: signatures,\n            sender_address: senderAddress,\n            compiled_class_hash: compiledClassHash,\n            version: numericToHexString(version),\n            nonce: numericToHexString(nonce),\n            max_fee: numericToHexString(maxFee)\n        })\n        .catch((error: AxiosError<starknet.StarkError>) => {\n            const msg = `Declaring contract failed: ${error.response.data.message}`;\n            throw new StarknetPluginError(msg, error);\n        });\n\n    return new Promise<string>((resolve, reject) => {\n        iterativelyCheckStatus(\n            resp.data.transaction_hash,\n            hre.starknetWrapper,\n            () => resolve(resp.data.transaction_hash),\n            reject\n        );\n    });\n}\n\nexport async function sendEstimateFeeTx(data: unknown) {\n    const hre = await import(\"hardhat\");\n    // To resolve TypeError: Do not know how to serialize a BigInt\n    // coming from axios\n    (BigInt.prototype as any).toJSON = function () {\n        return this.toString();\n    };\n\n    const resp = await axios\n        .post(`${hre.starknet.networkConfig.url}/feeder_gateway/estimate_fee`, data)\n        .catch((error: AxiosError<starknet.StarkError>) => {\n            const msg = `Estimating fees failed: ${error.response.data.message}`;\n            throw new StarknetPluginError(msg, error);\n        });\n\n    const { gas_price, gas_usage, overall_fee, unit } = resp.data;\n    return {\n        amount: BigInt(overall_fee),\n        unit,\n        gas_price: BigInt(gas_price),\n        gas_usage: BigInt(gas_usage)\n    } as starknet.FeeEstimation;\n}\n"
  },
  {
    "path": "src/account.ts",
    "content": "import { constants, ec, hash, selector, BigNumberish, Call, RawCalldata } from \"starknet\";\n\nimport {\n    calculateDeployAccountHash,\n    CallParameters,\n    generateKeys,\n    handleInternalContractArtifacts,\n    sendDeclareV2Tx,\n    sendDeployAccountTx,\n    sendEstimateFeeTx,\n    signMultiCall\n} from \"./account-utils\";\nimport {\n    QUERY_VERSION,\n    StarknetChainId,\n    TransactionHashPrefix,\n    TRANSACTION_VERSION,\n    UDC_DEPLOY_FUNCTION_NAME\n} from \"./constants\";\nimport { getTransactionReceiptUtil } from \"./extend-utils\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport * as starknet from \"./starknet-types\";\nimport {\n    ContractInteractionFunction,\n    DeclareOptions,\n    DeployAccountOptions,\n    DeployOptions,\n    EstimateFeeOptions,\n    InteractChoice,\n    InteractOptions,\n    InvokeOptions,\n    InvokeResponse,\n    Numeric,\n    StarknetContract,\n    StarknetContractFactory,\n    StringMap\n} from \"./types\";\nimport {\n    numericToHexString,\n    copyWithBigint,\n    generateRandomSalt,\n    UDC,\n    readContract,\n    bnToDecimalStringArray,\n    estimatedFeeToMaxFee,\n    readCairo1Contract\n} from \"./utils\";\n\ntype ExecuteCallParameters = {\n    to: bigint;\n    selector: BigNumberish;\n    data_offset: number;\n    data_len: number;\n};\n\n/**\n * Representation of an Account.\n * Multiple implementations can exist, each will be defined by an extension of this Abstract class\n */\nexport abstract class Account {\n    public publicKey: string;\n\n    protected constructor(\n        public starknetContract: StarknetContract,\n        public privateKey: string,\n        public salt: string,\n        protected deployed: boolean\n    ) {\n        this.publicKey = ec.starkCurve.getStarkKey(privateKey);\n    }\n\n    /**\n     * Uses the account contract as a proxy to invoke a function on the target contract with a signature\n     *\n     * @param toContract target contract to be called\n     * @param functionName function in the contract to be called\n     * @param calldata calldata to use as input for the contract call\n     */\n    async invoke(\n        toContract: StarknetContract,\n        functionName: string,\n        calldata?: StringMap,\n        options?: InvokeOptions\n    ): Promise<InvokeResponse> {\n        if (options?.maxFee && options?.overhead) {\n            const msg = \"maxFee and overhead cannot be specified together\";\n            throw new StarknetPluginError(msg);\n        }\n\n        if (options?.maxFee === undefined || options?.maxFee === null) {\n            const maxFee = await this.estimateFee(toContract, functionName, calldata, options);\n            options = {\n                ...options,\n                maxFee: estimatedFeeToMaxFee(maxFee.amount, options?.overhead)\n            };\n        }\n        return (\n            await this.interact(InteractChoice.INVOKE, toContract, functionName, calldata, options)\n        ).toString();\n    }\n\n    get address() {\n        return this.starknetContract.address;\n    }\n\n    /**\n     * Deploy another contract using this account\n     * @param contractFactory the factory of the contract to be deployed\n     * @param constructorArguments\n     * @param options extra options\n     * @returns the deployed StarknetContract\n     */\n    async deploy(\n        contractFactory: StarknetContractFactory,\n        constructorArguments?: StringMap,\n        options: DeployOptions = {}\n    ): Promise<StarknetContract> {\n        const classHash = await contractFactory.getClassHash();\n        const udc = await UDC.getInstance();\n        const adaptedArgs = contractFactory.handleConstructorArguments(constructorArguments);\n        const deployTxHash = await this.invoke(\n            udc,\n            UDC_DEPLOY_FUNCTION_NAME,\n            {\n                classHash,\n                salt: options?.salt ?? generateRandomSalt(),\n                unique: BigInt(options?.unique ?? true),\n                calldata: adaptedArgs\n            },\n            {\n                maxFee: options?.maxFee,\n                nonce: options?.nonce\n            }\n        );\n\n        const hre = await import(\"hardhat\");\n        const deploymentReceipt = await getTransactionReceiptUtil(deployTxHash, hre);\n        const decodedEvents = udc.decodeEvents(deploymentReceipt.events);\n        // the only event should be ContractDeployed\n        const deployedContractAddress = numericToHexString(decodedEvents[0].data.address);\n\n        const deployedContract = contractFactory.getContractAt(deployedContractAddress);\n        deployedContract.deployTxHash = deployTxHash;\n\n        return deployedContract;\n    }\n\n    protected assertNotDeployed() {\n        if (this.deployed) {\n            const msg = \"The account is not expected to be deployed.\";\n            throw new StarknetPluginError(msg);\n        }\n    }\n\n    private assertDeployed() {\n        if (!this.deployed) {\n            const msg = \"Prior to usage, the account must be funded and deployed.\";\n            throw new StarknetPluginError(msg);\n        }\n    }\n\n    async estimateFee(\n        toContract: StarknetContract,\n        functionName: string,\n        calldata?: StringMap,\n        options?: EstimateFeeOptions\n    ): Promise<starknet.FeeEstimation> {\n        return await this.interact(\n            InteractChoice.ESTIMATE_FEE,\n            toContract,\n            functionName,\n            calldata,\n            options\n        );\n    }\n\n    private async estimateDeclareV2Fee(\n        contractFactory: StarknetContractFactory,\n        options: EstimateFeeOptions = {}\n    ): Promise<starknet.FeeEstimation> {\n        const maxFee = (options.maxFee || 0).toString();\n        const version = hash.feeTransactionVersion_2;\n        const nonce = options.nonce == null ? await this.getNonce() : options.nonce;\n\n        const hre = await import(\"hardhat\");\n        const chainId = hre.starknet.networkConfig.starknetChainId;\n\n        const compiledClassHash = await hre.starknetWrapper.getCompiledClassHash(\n            contractFactory.casmPath\n        );\n\n        const classHash = await hre.starknetWrapper.getSierraContractClassHash(\n            contractFactory.metadataPath\n        );\n\n        const messageHash = hash.calculateDeclareTransactionHash(\n            classHash,\n            this.address,\n            version,\n            maxFee,\n            chainId as unknown as constants.StarknetChainId,\n            nonce,\n            compiledClassHash\n        );\n        const signatures = this.getSignatures(messageHash);\n\n        const data = {\n            type: \"DECLARE\",\n            sender_address: this.address,\n            compiled_class_hash: compiledClassHash,\n            contract_class: readCairo1Contract(contractFactory.metadataPath).getCompiledClass(),\n            signature: bnToDecimalStringArray(signatures || []),\n            version: numericToHexString(version),\n            nonce: numericToHexString(nonce)\n        };\n\n        return await sendEstimateFeeTx(data);\n    }\n\n    async estimateDeclareFee(\n        contractFactory: StarknetContractFactory,\n        options: EstimateFeeOptions = {}\n    ): Promise<starknet.FeeEstimation> {\n        if (contractFactory.isCairo1()) {\n            return await this.estimateDeclareV2Fee(contractFactory, options);\n        }\n\n        const nonce = options.nonce == null ? await this.getNonce() : options.nonce;\n        const maxFee = (options.maxFee || 0).toString();\n\n        const hre = await import(\"hardhat\");\n        const classHash = await hre.starknetWrapper.getClassHash(contractFactory.metadataPath);\n        const chainId = hre.starknet.networkConfig.starknetChainId;\n\n        const calldata = [classHash];\n        const calldataHash = hash.computeHashOnElements(calldata);\n\n        const messageHash = hash.computeHashOnElements([\n            TransactionHashPrefix.DECLARE,\n            numericToHexString(QUERY_VERSION),\n            this.address,\n            0, // entrypoint selector is implied\n            calldataHash,\n            maxFee,\n            chainId,\n            numericToHexString(nonce)\n        ]);\n\n        const signature = this.getSignatures(messageHash);\n        const data = {\n            type: \"DECLARE\",\n            sender_address: this.address,\n            contract_class: readContract(contractFactory.metadataPath),\n            signature: bnToDecimalStringArray(signature || []),\n            version: numericToHexString(QUERY_VERSION),\n            nonce: numericToHexString(nonce)\n        };\n        return await sendEstimateFeeTx(data);\n    }\n\n    async estimateDeployFee(\n        contractFactory: StarknetContractFactory,\n        constructorArguments?: StringMap,\n        options: EstimateFeeOptions = {}\n    ): Promise<starknet.FeeEstimation> {\n        const classHash = await contractFactory.getClassHash();\n        const udc = await UDC.getInstance();\n        const adaptedArgs = contractFactory.handleConstructorArguments(constructorArguments);\n        const calldata: StringMap = {\n            classHash,\n            salt: options?.salt ?? generateRandomSalt(),\n            unique: BigInt(options?.unique ?? true),\n            calldata: adaptedArgs\n        };\n        return await this.estimateFee(udc, UDC_DEPLOY_FUNCTION_NAME, calldata, options);\n    }\n\n    private async interact(\n        choice: InteractChoice,\n        toContract: StarknetContract,\n        functionName: string,\n        calldata?: StringMap,\n        options?: InteractOptions\n    ) {\n        const call: CallParameters = {\n            functionName: functionName,\n            toContract: toContract,\n            calldata: calldata\n        };\n\n        return await this.multiInteract(choice, [call], options);\n    }\n\n    /**\n     * Performs multiple invokes as a single transaction through this account\n     * @param callParameters an array with the parameters for each invoke\n     * @returns the transaction hash of the invoke\n     */\n    async multiInvoke(callParameters: CallParameters[], options?: InvokeOptions): Promise<string> {\n        // Invoke only returns one transaction hash, as the multiple invokes are done by the account contract, but only one is sent to it.\n        return await this.multiInteract(InteractChoice.INVOKE, callParameters, options);\n    }\n\n    /**\n     * Estimate the fee of the multicall.\n     * @param callParameters an array with the parameters for each call\n     * @returns the total estimated fee\n     */\n    async multiEstimateFee(\n        callParameters: CallParameters[],\n        options?: EstimateFeeOptions\n    ): Promise<starknet.FeeEstimation> {\n        return await this.multiInteract(InteractChoice.ESTIMATE_FEE, callParameters, options);\n    }\n\n    private async multiInteract(\n        choice: InteractChoice,\n        callParameters: CallParameters[],\n        options: InteractOptions = {}\n    ) {\n        this.assertDeployed();\n        options = copyWithBigint(options);\n        options.maxFee = BigInt(options?.maxFee || \"0\");\n        const nonce = options.nonce == null ? await this.getNonce() : options.nonce;\n        delete options.nonce; // the options object is incompatible if passed on with nonce\n\n        const hre = await import(\"hardhat\");\n        const { messageHash, args } = this.handleMultiInteract(\n            this.address,\n            callParameters,\n            nonce,\n            options.maxFee,\n            choice.transactionVersion,\n            hre.starknet.networkConfig.starknetChainId,\n            options.rawInput\n        );\n\n        if (options.signature) {\n            const msg =\n                \"Custom signature cannot be specified when using Account (it is calculated automatically)\";\n            throw new StarknetPluginError(msg);\n        }\n        const contractInteractOptions = {\n            signature: this.getSignatures(messageHash),\n            ...options,\n            rawInput: false // rawInput shouldn't affect validating args of __execute__\n        };\n\n        const contractInteractor = (<ContractInteractionFunction>(\n            this.starknetContract[choice.internalCommand]\n        )).bind(this.starknetContract);\n        const executionFunctionName = this.getExecutionFunctionName();\n        return contractInteractor(executionFunctionName, args, contractInteractOptions);\n    }\n\n    /**\n     * Prepares the calldata and hashes the message for the multicall execution\n     *\n     * @param accountAddress address of the account contract\n     * @param callParameters array with the call parameters\n     * @param nonce current nonce\n     * @param maxFee the maximum fee amount set for the contract interaction\n     * @param version the transaction version\n     * @param chainId the ID of the chain\n     * @param rawInput if `true`, interprets calldata as already adapted into an array\n     * @returns the message hash for the multicall and the arguments to execute it with\n     */\n    private handleMultiInteract(\n        accountAddress: string,\n        callParameters: CallParameters[],\n        nonce: Numeric,\n        maxFee: Numeric,\n        version: Numeric,\n        chainId: StarknetChainId,\n        rawInput: boolean\n    ) {\n        const callArray: Call[] = callParameters.map((callParameters) => {\n            const calldata = rawInput\n                ? <string[]>callParameters.calldata\n                : callParameters.toContract.adaptInput(\n                      callParameters.functionName,\n                      callParameters.calldata\n                  );\n            return {\n                contractAddress: callParameters.toContract.address,\n                entrypoint: callParameters.functionName,\n                calldata\n            };\n        });\n\n        const executeCallArray: ExecuteCallParameters[] = [];\n        const rawCalldata: RawCalldata = [];\n\n        // Parse the Call array to create the objects which will be accepted by the contract\n        callArray.forEach((call) => {\n            const calldata = call.calldata as BigNumberish[];\n            executeCallArray.push({\n                to: BigInt(call.contractAddress),\n                selector: selector.starknetKeccak(call.entrypoint),\n                data_offset: rawCalldata.length,\n                data_len: calldata.length\n            });\n            rawCalldata.push(...calldata);\n        });\n\n        const adaptedNonce = nonce.toString();\n        const adaptedMaxFee = numericToHexString(maxFee);\n        const adaptedVersion = numericToHexString(version);\n        const messageHash = this.getMessageHash(\n            TransactionHashPrefix.INVOKE,\n            accountAddress,\n            callArray,\n            adaptedNonce,\n            adaptedMaxFee,\n            adaptedVersion,\n            chainId\n        );\n\n        const args = {\n            call_array: executeCallArray,\n            calldata: rawCalldata\n        };\n        return { messageHash, args };\n    }\n\n    protected abstract getMessageHash(\n        transactionHashPrefix: TransactionHashPrefix,\n        accountAddress: string,\n        callArray: Call[],\n        nonce: string,\n        maxFee: string,\n        version: string,\n        chainId: StarknetChainId\n    ): string;\n\n    protected abstract getSignatures(messageHash: string): bigint[];\n\n    protected abstract estimateDeployAccountFee(): Promise<starknet.FeeEstimation>;\n\n    public abstract deployAccount(options?: DeployAccountOptions): Promise<string>;\n\n    protected getExecutionFunctionName() {\n        return \"__execute__\";\n    }\n\n    private async getNonce(): Promise<number> {\n        const hre = await import(\"hardhat\");\n        return await hre.starknet.getNonce(this.address);\n    }\n\n    /**\n     * Declare the contract class corresponding to the `contractFactory`\n     * @param contractFactory\n     * @param options\n     * @returns transaction hash\n     */\n    public async declare(\n        contractFactory: StarknetContractFactory,\n        options: DeclareOptions = {}\n    ): Promise<string> {\n        if (contractFactory.isCairo1()) {\n            return await this.declareV2(contractFactory, options);\n        }\n\n        let maxFee = options?.maxFee;\n        if (maxFee && options?.overhead) {\n            const msg = \"maxFee and overhead cannot be specified together\";\n            throw new StarknetPluginError(msg);\n        }\n\n        const nonce = options.nonce == null ? await this.getNonce() : options.nonce;\n        if (maxFee === undefined || maxFee === null) {\n            const estimatedDeclareFee = await this.estimateDeclareFee(contractFactory, options);\n            maxFee = estimatedFeeToMaxFee(estimatedDeclareFee.amount, options?.overhead);\n        }\n\n        const hre = await import(\"hardhat\");\n        const classHash = await hre.starknetWrapper.getClassHash(contractFactory.metadataPath);\n        const chainId = hre.starknet.networkConfig.starknetChainId;\n\n        const calldata = [classHash];\n        const calldataHash = hash.computeHashOnElements(calldata);\n\n        const messageHash = hash.computeHashOnElements([\n            TransactionHashPrefix.DECLARE,\n            TRANSACTION_VERSION.toString(),\n            this.address,\n            0, // entrypoint selector is implied\n            calldataHash,\n            maxFee.toString(),\n            chainId,\n            nonce.toString()\n        ]);\n\n        const signature = this.getSignatures(messageHash);\n        return contractFactory.declare({\n            nonce,\n            signature,\n            token: options.token,\n            sender: this.address,\n            maxFee: BigInt(maxFee)\n        });\n    }\n\n    private async declareV2(\n        contractFactory: StarknetContractFactory,\n        options: DeclareOptions = {}\n    ): Promise<string> {\n        let maxFee = options?.maxFee;\n        if (maxFee && options?.overhead) {\n            const msg = \"maxFee and overhead cannot be specified together\";\n            throw new StarknetPluginError(msg);\n        }\n\n        const nonce = options.nonce == null ? await this.getNonce() : options.nonce;\n        if (maxFee === undefined || maxFee === null) {\n            const estimatedDeclareFee = await this.estimateDeclareV2Fee(contractFactory, options);\n            maxFee = estimatedFeeToMaxFee(estimatedDeclareFee.amount, options?.overhead);\n        }\n\n        const version = hash.transactionVersion_2;\n        const hre = await import(\"hardhat\");\n        const chainId = hre.starknet.networkConfig.starknetChainId;\n\n        const compiledClassHash = await hre.starknetWrapper.getCompiledClassHash(\n            contractFactory.casmPath\n        );\n        const classHash = await hre.starknetWrapper.getSierraContractClassHash(\n            contractFactory.metadataPath\n        );\n\n        const messageHash = hash.calculateDeclareTransactionHash(\n            classHash,\n            this.address,\n            version,\n            maxFee,\n            chainId as unknown as constants.StarknetChainId,\n            nonce,\n            compiledClassHash\n        );\n        const signatures = this.getSignatures(messageHash);\n\n        return sendDeclareV2Tx(\n            bnToDecimalStringArray(signatures),\n            compiledClassHash,\n            maxFee,\n            this.address,\n            version,\n            nonce,\n            readCairo1Contract(contractFactory.metadataPath)\n        );\n    }\n}\n\n/**\n * Wrapper for the OpenZeppelin implementation of an Account\n */\nexport class OpenZeppelinAccount extends Account {\n    private static contractFactory: StarknetContractFactory;\n\n    protected constructor(\n        starknetContract: StarknetContract,\n        privateKey: string,\n        salt: string,\n        deployed: boolean\n    ) {\n        super(starknetContract, privateKey, salt, deployed);\n    }\n\n    private static async getContractFactory() {\n        const hre = await import(\"hardhat\");\n        if (!this.contractFactory) {\n            const contractPath = handleInternalContractArtifacts(\n                \"OpenZeppelinAccount\",\n                \"Account\",\n                \"0.5.1\",\n                hre\n            );\n            this.contractFactory = await hre.starknet.getContractFactory(contractPath);\n        }\n        return this.contractFactory;\n    }\n\n    /**\n     * Generates a new key pair if none specified.\n     * The created account needs to be deployed using the `deployAccount` method.\n     * @param options\n     * @returns an undeployed instance of account\n     */\n    public static async createAccount(\n        options: {\n            salt?: string;\n            privateKey?: string;\n        } = {}\n    ): Promise<OpenZeppelinAccount> {\n        const signer = generateKeys(options.privateKey);\n        const salt = options.salt || generateRandomSalt();\n        const contractFactory = await this.getContractFactory();\n        const address = hash.calculateContractAddressFromHash(\n            salt,\n            await contractFactory.getClassHash(),\n            [signer.publicKey],\n            \"0x0\" // deployer address\n        );\n        const contract = contractFactory.getContractAt(address);\n        return new this(contract, signer.privateKey, salt, false);\n    }\n\n    protected override getMessageHash(\n        transactionHashPrefix: TransactionHashPrefix,\n        accountAddress: string,\n        callArray: Call[],\n        nonce: string,\n        maxFee: string,\n        version: string,\n        chainId: StarknetChainId\n    ): string {\n        const hashable: BigNumberish[] = [callArray.length];\n        const rawCalldata: RawCalldata = [];\n        callArray.forEach((call) => {\n            const calldata = call.calldata as BigNumberish[];\n            hashable.push(\n                call.contractAddress,\n                hash.starknetKeccak(call.entrypoint),\n                rawCalldata.length,\n                calldata.length\n            );\n            rawCalldata.push(...calldata);\n        });\n\n        hashable.push(rawCalldata.length, ...rawCalldata);\n        const calldataHash = hash.computeHashOnElements(hashable);\n        return hash.computeHashOnElements([\n            transactionHashPrefix,\n            version,\n            accountAddress,\n            0, // entrypoint selector is implied\n            calldataHash,\n            maxFee,\n            chainId,\n            nonce\n        ]);\n    }\n\n    protected override getSignatures(messageHash: string): bigint[] {\n        return signMultiCall(messageHash, this.privateKey);\n    }\n\n    public override async estimateDeployAccountFee(): Promise<starknet.FeeEstimation> {\n        this.assertNotDeployed();\n        const hre = await import(\"hardhat\");\n\n        const contractFactory = await OpenZeppelinAccount.getContractFactory();\n        const classHash = await contractFactory.getClassHash();\n        const constructorCalldata = [BigInt(this.publicKey).toString()];\n\n        const maxFee = numericToHexString(0);\n        const nonce = numericToHexString(0);\n\n        const calldataHash = hash.computeHashOnElements([\n            classHash,\n            this.salt,\n            ...constructorCalldata\n        ]);\n        const msgHash = hash.computeHashOnElements([\n            TransactionHashPrefix.DEPLOY_ACCOUNT,\n            numericToHexString(QUERY_VERSION),\n            this.address,\n            0, // entrypoint selector is implied\n            calldataHash,\n            maxFee,\n            hre.starknet.networkConfig.starknetChainId,\n            nonce\n        ]);\n\n        const signature = this.getSignatures(msgHash);\n        const data = {\n            type: \"DEPLOY_ACCOUNT\",\n            class_hash: classHash,\n            constructor_calldata: constructorCalldata,\n            contract_address_salt: this.salt,\n            signature: bnToDecimalStringArray(signature || []),\n            version: numericToHexString(QUERY_VERSION),\n            nonce\n        };\n\n        return await sendEstimateFeeTx(data);\n    }\n\n    public override async deployAccount(options: DeployAccountOptions = {}): Promise<string> {\n        this.assertNotDeployed();\n        const hre = await import(\"hardhat\");\n\n        let maxFee = options?.maxFee;\n        if (maxFee && options?.overhead) {\n            const msg = \"maxFee and overhead cannot be specified together\";\n            throw new StarknetPluginError(msg);\n        }\n\n        if (maxFee === undefined || maxFee === null) {\n            const estimatedDeployFee = await this.estimateDeployAccountFee();\n            maxFee = estimatedFeeToMaxFee(estimatedDeployFee.amount, options?.overhead);\n        }\n\n        const contractFactory = await OpenZeppelinAccount.getContractFactory();\n        const classHash = await contractFactory.getClassHash();\n        const constructorCalldata = [BigInt(this.publicKey).toString()];\n\n        const msgHash = calculateDeployAccountHash(\n            this.address,\n            constructorCalldata,\n            this.salt,\n            classHash,\n            numericToHexString(maxFee),\n            hre.starknet.networkConfig.starknetChainId\n        );\n\n        const deploymentTxHash = await sendDeployAccountTx(\n            this.getSignatures(msgHash).map((val) => val.toString()),\n            classHash,\n            constructorCalldata,\n            this.salt,\n            numericToHexString(maxFee)\n        );\n\n        this.starknetContract.deployTxHash = deploymentTxHash;\n        this.deployed = true;\n        return deploymentTxHash;\n    }\n\n    static async getAccountFromAddress(\n        address: string,\n        privateKey: string\n    ): Promise<OpenZeppelinAccount> {\n        const contractFactory = await this.getContractFactory();\n        const contract = contractFactory.getContractAt(address);\n\n        const { publicKey: expectedPubKey } = await contract.call(\"getPublicKey\");\n        const publicKey = ec.starkCurve.getStarkKey(privateKey);\n\n        if (BigInt(publicKey) !== expectedPubKey) {\n            throw new StarknetPluginError(\n                \"The provided private key is not compatible with the public key stored in the contract.\"\n            );\n        }\n\n        return new this(contract, privateKey, undefined, true);\n    }\n}\n\n/**\n * Wrapper for the Argent implementation of Account\n */\nexport class ArgentAccount extends Account {\n    private static readonly VERSION: string = \"780760e4156afe592bb1feff7e769cf279ae9831\";\n\n    private static proxyContractFactory: StarknetContractFactory;\n    private static implementationContractFactory: StarknetContractFactory;\n\n    private static readonly PROXY_CLASS_HASH =\n        \"0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918\";\n    private static readonly IMPLEMENTATION_CLASS_HASH =\n        \"0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2\";\n\n    public guardianPublicKey: string;\n    public guardianPrivateKey: string;\n\n    protected constructor(\n        starknetContract: StarknetContract,\n        privateKey: string,\n        guardianPrivateKey: string,\n        salt: string,\n        deployed: boolean\n    ) {\n        super(starknetContract, privateKey, salt, deployed);\n        this.guardianPrivateKey = guardianPrivateKey;\n        if (this.guardianPrivateKey) {\n            const guardianSigner = generateKeys(this.guardianPrivateKey);\n            this.guardianPublicKey = guardianSigner.publicKey;\n        }\n    }\n\n    private static async getImplementationContractFactory() {\n        const hre = await import(\"hardhat\");\n        if (!this.implementationContractFactory) {\n            const contractPath = handleInternalContractArtifacts(\n                \"ArgentAccount\",\n                \"ArgentAccount\",\n                this.VERSION,\n                hre\n            );\n            this.implementationContractFactory = await hre.starknet.getContractFactory(\n                contractPath\n            );\n        }\n        return this.implementationContractFactory;\n    }\n\n    private static async getProxyContractFactory() {\n        const hre = await import(\"hardhat\");\n        if (!this.proxyContractFactory) {\n            const contractPath = handleInternalContractArtifacts(\n                \"ArgentAccount\",\n                \"Proxy\",\n                this.VERSION,\n                hre\n            );\n            this.proxyContractFactory = await hre.starknet.getContractFactory(contractPath);\n        }\n        return this.proxyContractFactory;\n    }\n\n    private static generateGuardianPublicKey(guardianPrivateKey: string) {\n        if (!guardianPrivateKey) {\n            return \"0x0\";\n        }\n        return generateKeys(guardianPrivateKey).publicKey;\n    }\n\n    /**\n     * Generates a new key pair if none specified.\n     * Does NOT generate a new guardian key pair if none specified.\n     * If you don't specify a guardian private key, no guardian will be assigned.\n     * The created account needs to be deployed using the `deployAccount` method.\n     * @param options\n     * @returns an undeployed instance of account\n     */\n    public static async createAccount(\n        options: {\n            salt?: string;\n            privateKey?: string;\n            guardianPrivateKey?: string;\n        } = {}\n    ): Promise<ArgentAccount> {\n        const signer = generateKeys(options.privateKey);\n        const guardianPrivateKey = options?.guardianPrivateKey;\n        const guardianPublicKey = this.generateGuardianPublicKey(guardianPrivateKey);\n        const salt = options.salt || generateRandomSalt();\n        const constructorCalldata = [\n            this.IMPLEMENTATION_CLASS_HASH,\n            selector.getSelectorFromName(\"initialize\"),\n            \"2\",\n            signer.publicKey,\n            guardianPublicKey\n        ];\n        const address = hash.calculateContractAddressFromHash(\n            salt,\n            this.PROXY_CLASS_HASH,\n            constructorCalldata,\n            \"0x0\" // deployer address\n        );\n\n        const proxyContractFactory = await this.getProxyContractFactory();\n        const contract = proxyContractFactory.getContractAt(address);\n        return new this(contract, signer.privateKey, guardianPrivateKey, salt, false);\n    }\n\n    protected getMessageHash(\n        transactionHashPrefix: TransactionHashPrefix,\n        accountAddress: string,\n        callArray: Call[],\n        nonce: string,\n        maxFee: string,\n        version: string,\n        chainId: StarknetChainId\n    ): string {\n        const hashable: BigNumberish[] = [callArray.length];\n        const rawCalldata: RawCalldata = [];\n        callArray.forEach((call) => {\n            const calldata = call.calldata as BigNumberish[];\n            hashable.push(\n                call.contractAddress,\n                selector.starknetKeccak(call.entrypoint),\n                rawCalldata.length,\n                calldata.length\n            );\n            rawCalldata.push(...calldata);\n        });\n\n        hashable.push(rawCalldata.length, ...rawCalldata);\n        const calldataHash = hash.computeHashOnElements(hashable);\n        return hash.computeHashOnElements([\n            transactionHashPrefix,\n            version,\n            accountAddress,\n            0, // entrypoint selector is implied\n            calldataHash,\n            maxFee,\n            chainId,\n            nonce\n        ]);\n    }\n\n    protected override getSignatures(messageHash: string): bigint[] {\n        const signatures = signMultiCall(messageHash, this.privateKey);\n        if (this.guardianPrivateKey) {\n            const guardianSignatures = signMultiCall(messageHash, this.guardianPrivateKey);\n            signatures.push(...guardianSignatures);\n        }\n        return signatures;\n    }\n\n    public override async estimateDeployAccountFee(): Promise<starknet.FeeEstimation> {\n        this.assertNotDeployed();\n        const hre = await import(\"hardhat\");\n\n        const nonce = numericToHexString(0);\n        const maxFee = numericToHexString(0);\n\n        const constructorCalldata: string[] = [\n            ArgentAccount.IMPLEMENTATION_CLASS_HASH,\n            selector.getSelectorFromName(\"initialize\"),\n            \"2\",\n            this.publicKey,\n            ArgentAccount.generateGuardianPublicKey(this.guardianPrivateKey)\n        ].map((val) => BigInt(val).toString());\n        const calldataHash = hash.computeHashOnElements([\n            ArgentAccount.PROXY_CLASS_HASH,\n            this.salt,\n            ...constructorCalldata\n        ]);\n        const msgHash = hash.computeHashOnElements([\n            TransactionHashPrefix.DEPLOY_ACCOUNT,\n            numericToHexString(QUERY_VERSION),\n            this.address,\n            0, // entrypoint selector is implied\n            calldataHash,\n            maxFee,\n            hre.starknet.networkConfig.starknetChainId,\n            nonce\n        ]);\n\n        const signature = this.getSignatures(msgHash);\n        const data = {\n            type: \"DEPLOY_ACCOUNT\",\n            class_hash: ArgentAccount.PROXY_CLASS_HASH,\n            constructor_calldata: constructorCalldata,\n            contract_address_salt: this.salt,\n            signature: bnToDecimalStringArray(signature || []),\n            version: numericToHexString(QUERY_VERSION),\n            nonce\n        };\n\n        return await sendEstimateFeeTx(data);\n    }\n\n    /**\n     * Deploys (initializes) the account.\n     * @param options\n     * @returns the tx hash of the deployment\n     */\n    public override async deployAccount(options: DeployAccountOptions = {}): Promise<string> {\n        this.assertNotDeployed();\n        const hre = await import(\"hardhat\");\n\n        let maxFee = options?.maxFee;\n        if (maxFee && options?.overhead) {\n            const msg = \"maxFee and overhead cannot be specified together\";\n            throw new StarknetPluginError(msg);\n        }\n\n        if (maxFee === undefined || maxFee === null) {\n            const estimatedDeployFee = await this.estimateDeployAccountFee();\n            maxFee = estimatedFeeToMaxFee(estimatedDeployFee.amount, options?.overhead);\n        }\n\n        const constructorCalldata: string[] = [\n            ArgentAccount.IMPLEMENTATION_CLASS_HASH,\n            selector.getSelectorFromName(\"initialize\"),\n            \"2\",\n            this.publicKey,\n            ArgentAccount.generateGuardianPublicKey(this.guardianPrivateKey)\n        ].map((val) => BigInt(val).toString());\n\n        const msgHash = calculateDeployAccountHash(\n            this.address,\n            constructorCalldata,\n            this.salt,\n            ArgentAccount.PROXY_CLASS_HASH,\n            numericToHexString(maxFee),\n            hre.starknet.networkConfig.starknetChainId\n        );\n\n        const deploymentTxHash = await sendDeployAccountTx(\n            this.getSignatures(msgHash).map((val) => val.toString()),\n            ArgentAccount.PROXY_CLASS_HASH,\n            constructorCalldata,\n            this.salt,\n            numericToHexString(maxFee)\n        );\n\n        const implementationFactory = await ArgentAccount.getImplementationContractFactory();\n        this.starknetContract.setImplementation(implementationFactory);\n        this.starknetContract.deployTxHash = deploymentTxHash;\n        this.deployed = true;\n        return deploymentTxHash;\n    }\n\n    /**\n     * Updates the guardian key in the contract. Set it to `undefined` to remove the guardian.\n     * @param newGuardianPrivateKey private key of the guardian to update\n     * @returns hash of the transaction which changes the guardian\n     */\n    public async setGuardian(\n        newGuardianPrivateKey?: string,\n        invokeOptions?: InvokeOptions\n    ): Promise<string> {\n        let guardianPublicKey: string;\n        if (!BigInt(newGuardianPrivateKey || 0)) {\n            newGuardianPrivateKey = undefined;\n            guardianPublicKey = undefined;\n        } else {\n            guardianPublicKey = ec.starkCurve.getStarkKey(newGuardianPrivateKey);\n        }\n\n        const call: CallParameters = {\n            functionName: \"changeGuardian\",\n            toContract: this.starknetContract,\n            calldata: { newGuardian: BigInt(guardianPublicKey || 0) }\n        };\n\n        const txHash = await this.multiInvoke([call], invokeOptions);\n\n        // set after signing\n        this.guardianPrivateKey = newGuardianPrivateKey;\n        this.guardianPublicKey = guardianPublicKey;\n\n        return txHash;\n    }\n\n    /**\n     * Returns an account previously deployed to `address`.\n     * A check is performed if the public key stored in the account matches the provided `privateKey`.\n     * No check is done for the optional guardian private key.\n     * @param address\n     * @param privateKey\n     * @param options\n     * @returns the retrieved account\n     */\n    static async getAccountFromAddress(\n        address: string,\n        privateKey: string,\n        options: {\n            guardianPrivateKey?: string;\n        } = {}\n    ): Promise<ArgentAccount> {\n        const contractFactory = await this.getProxyContractFactory();\n        const contract = contractFactory.getContractAt(address);\n        const implementationFactory = await this.getImplementationContractFactory();\n        contract.setImplementation(implementationFactory);\n\n        const { signer: expectedPubKey } = await contract.call(\"getSigner\");\n        const publicKey = ec.starkCurve.getStarkKey(privateKey);\n\n        if (expectedPubKey === BigInt(0)) {\n            // not yet initialized\n        } else if (BigInt(publicKey) !== expectedPubKey) {\n            throw new StarknetPluginError(\n                \"The provided private key is not compatible with the public key stored in the contract.\"\n            );\n        }\n\n        return new this(contract, privateKey, options.guardianPrivateKey, undefined, true);\n    }\n}\n"
  },
  {
    "path": "src/adapt.ts",
    "content": "import { BigNumberish, num } from \"starknet\";\n\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport { HEXADECIMAL_REGEX, LEN_SUFFIX_DEPRECATED } from \"./constants\";\nimport * as starknet from \"./starknet-types\";\nimport { StringMap } from \"./types\";\n\nconst NAMED_TUPLE_DELIMITER = \": \";\nconst ARGUMENTS_DELIMITER = \", \";\nconst COMMON_NUMERIC_TYPES = [\n    \"felt\",\n    \"core::felt252\",\n    \"core::integer::u8\",\n    \"core::integer::u16\",\n    \"core::integer::u32\",\n    \"core::integer::u64\",\n    \"core::integer::u128\",\n    \"core::starknet::contract_address::ContractAddress\",\n    \"core::starknet::class_hash::ClassHash\",\n    \"core::starknet::eth_address::EthAddress\"\n];\n\nconst ARRAY_TYPE_PREFIX = \"core::array::Array::<\";\nconst ARRAY_TYPE_SUFFIX = \">\";\n\nfunction isNumeric(value: { toString: () => string }) {\n    if (value === undefined || value === null) {\n        return false;\n    }\n    const strValue = value.toString();\n\n    const decimalRegex = /^-?\\d+$/;\n    return decimalRegex.test(strValue) || HEXADECIMAL_REGEX.test(strValue);\n}\n\nconst PRIME = BigInt(2) ** BigInt(251) + BigInt(17) * BigInt(2) ** BigInt(192) + BigInt(1);\nconst PRIME_FLOOR = BigInt(\"0x400000000000008800000000000000000000000000000000000000000000000\"); // Math.floor(PRIME / 2)\n\nfunction toNumericString(value: { toString: () => string }) {\n    const num = BigInt(value.toString());\n    const nonNegativeNum = ((num % PRIME) + PRIME) % PRIME;\n    return nonNegativeNum.toString();\n}\n\nfunction isNamedTuple(type: string): boolean {\n    return type.includes(NAMED_TUPLE_DELIMITER);\n}\n\nfunction isTuple(type: string): boolean {\n    return type[0] === \"(\" && type[type.length - 1] === \")\";\n}\n\nfunction isArrayDeprecated(type: string): boolean {\n    return type.endsWith(\"*\");\n}\n\nfunction isArray(type: string): boolean {\n    return type.startsWith(ARRAY_TYPE_PREFIX) && type.endsWith(ARRAY_TYPE_SUFFIX);\n}\n\nfunction isBool(type: string): boolean {\n    return type == \"core::bool\";\n}\n\nfunction isU256(type: string): boolean {\n    return type == \"core::integer::u256\";\n}\n\nfunction validateAndConvertBooleanInput(value: any, errorMsg: string): string {\n    if (typeof value !== \"boolean\" && typeof value !== \"number\") {\n        throw new StarknetPluginError(errorMsg);\n    }\n\n    const numericValue = Number(value);\n    if (numericValue !== 0 && numericValue !== 1) {\n        throw new StarknetPluginError(errorMsg);\n    }\n    return toNumericString(numericValue);\n}\n\nconst U128_MAX = (BigInt(1) << BigInt(128)) - BigInt(1);\n\nfunction validateAndConvertU256Input(value: any, errorMsg: string): string[] {\n    if (typeof value !== \"number\" && typeof value !== \"bigint\") {\n        throw new StarknetPluginError(errorMsg);\n    }\n\n    value = BigInt(value);\n\n    const lo = value & U128_MAX;\n    const hi = value >> BigInt(128);\n\n    return [toNumericString(lo), toNumericString(hi)];\n}\n\nfunction convertOutputToBoolean(type: bigint): boolean {\n    return type ? true : false;\n}\n\nfunction convertOutputToU256(lo: bigint, hi: bigint): bigint {\n    return (BigInt(hi) << BigInt(128)) | BigInt(lo);\n}\n\n// Can't use String.split since ':' also can be inside type\n// Ex: x : (y : felt, z: SomeStruct)\nfunction parseNamedTuple(namedTuple: string): starknet.Argument {\n    const index = namedTuple.indexOf(NAMED_TUPLE_DELIMITER);\n    const name = namedTuple.substring(0, index);\n    const type = namedTuple.substring(name.length + NAMED_TUPLE_DELIMITER.length);\n\n    return { name, type };\n}\n\n// Returns types of tuple\nfunction extractMemberTypes(s: string): string[] {\n    // Replace all top-level tuples with '#'\n    const specialSymbol = \"#\";\n\n    let i = 0;\n    let tmp = \"\";\n    const replacedSubStrings: string[] = [];\n    while (i < s.length) {\n        if (s[i] === \"(\") {\n            let counter = 1;\n            const openingBracket = i;\n\n            // Move to next element after '('\n            i++;\n            // As invariant we assume that cairo compiler checks\n            // that num of '(' === num of ')' so we will terminate\n            // before i > s.length\n            while (counter) {\n                if (s[i] === \")\") {\n                    counter--;\n                }\n                if (s[i] === \"(\") {\n                    counter++;\n                }\n\n                i++;\n            }\n\n            replacedSubStrings.push(s.substring(openingBracket, i));\n            // replace tuple with special symbol\n            tmp += specialSymbol;\n\n            // Move index back on last ')'\n            i--;\n        } else {\n            tmp += s[i];\n        }\n\n        i++;\n    }\n\n    let specialSymbolCounter = 0;\n    // Now can split as all tuples replaced with '#'\n    return tmp.split(ARGUMENTS_DELIMITER).map((type) => {\n        // if type contains '#' then replace it with replaced substring\n        if (type.includes(specialSymbol)) {\n            return type.replace(specialSymbol, replacedSubStrings[specialSymbolCounter++]);\n        } else {\n            return type;\n        }\n    });\n}\n/**\n * Adapts an object of named input arguments to an array of stringified arguments in the correct order.\n *\n * E.g. If your contract has a function\n * ```text\n * func double_sum(x: felt, y: felt) -> (res: felt):\n *     return (res=(x + y) * 2)\n * end\n * ```\n * then running\n * ```typescript\n * const abi = readAbi(...);\n * const funcName = \"double_sum\";\n * const inputSpecs = abi[funcName].inputs;\n * const adapted = adaptInputUtil(funcName, {x: 1, y: 2}, inputSpecs, abi);\n * console.log(adapted);\n * ```\n * will yield\n * ```text\n * > [\"1\", \"2\"]\n * ```\n * @param functionName the name of the function whose input is adapted\n * @param input the input object containing function arguments under their names\n * @param inputSpecs ABI specifications extracted from function.inputs\n * @param abi the ABI artifact of compilation, parsed into an object\n * @returns array containing stringified function arguments in the correct order\n */\nexport function adaptInputUtil(\n    functionName: string,\n    input: any,\n    inputSpecs: starknet.Argument[],\n    abi: starknet.Abi,\n    isCairo1: boolean\n): string[] {\n    const adapted: string[] = [];\n\n    // User won't pass array length as an argument for Cairo 0.x, so subtract the number of array elements to the expected amount of arguments\n    const countDeprecatedArrays = isCairo1\n        ? 0\n        : inputSpecs.filter((i) => isArrayDeprecated(i.type)).length;\n    const expectedInputCount = inputSpecs.length - countDeprecatedArrays;\n\n    // Initialize an array with the user input\n    const inputLen = Object.keys(input || {}).length;\n    if (expectedInputCount != inputLen) {\n        const msg = `${functionName}: Expected ${expectedInputCount} argument${\n            expectedInputCount === 1 ? \"\" : \"s\"\n        }, got ${inputLen}.`;\n        throw new StarknetPluginError(msg);\n    }\n\n    let lastSpec: starknet.Argument = { type: null, name: null };\n    for (let i = 0; i < inputSpecs.length; ++i) {\n        const inputSpec = inputSpecs[i];\n        const currentValue = input[inputSpec.name];\n        if (COMMON_NUMERIC_TYPES.includes(inputSpec.type)) {\n            const errorMsg =\n                `${functionName}: Expected \"${inputSpec.name}\" to be a felt (Numeric); ` +\n                `got: ${typeof currentValue}`;\n            if (isNumeric(currentValue)) {\n                adapted.push(toNumericString(currentValue));\n            } else if (!isCairo1 && inputSpec.name.endsWith(LEN_SUFFIX_DEPRECATED)) {\n                const nextSpec = inputSpecs[i + 1];\n                const arrayName = inputSpec.name.slice(0, -LEN_SUFFIX_DEPRECATED.length);\n                if (\n                    nextSpec &&\n                    nextSpec.name === arrayName &&\n                    isArrayDeprecated(nextSpec.type) &&\n                    arrayName in input\n                ) {\n                    // will add array length in next iteration\n                } else {\n                    throw new StarknetPluginError(errorMsg);\n                }\n            } else {\n                throw new StarknetPluginError(errorMsg);\n            }\n        } else if (isBool(inputSpec.type)) {\n            const errorMsg = `${functionName}: Expected \"${inputSpec.name}\" to be a boolean, or 0/1; got ${currentValue}`;\n            const value = validateAndConvertBooleanInput(currentValue, errorMsg);\n            adapted.push(value);\n        } else if (isU256(inputSpec.type)) {\n            const errorMsg = `${functionName}: Expected \"${inputSpec.name}\" to be numeric, got ${currentValue}`;\n            const values = validateAndConvertU256Input(currentValue, errorMsg);\n            adapted.push(...values);\n        } else if (isArrayDeprecated(inputSpec.type)) {\n            if (!Array.isArray(currentValue)) {\n                const msg = `${functionName}: Expected ${inputSpec.name} to be a ${inputSpec.type}`;\n                throw new StarknetPluginError(msg);\n            }\n\n            const lenName = `${inputSpec.name}${LEN_SUFFIX_DEPRECATED}`;\n            if (lastSpec.name !== lenName || lastSpec.type !== \"felt\") {\n                const msg = `${functionName}: Array size argument ${lenName} (felt) must appear right before ${inputSpec.name} (${inputSpec.type}).`;\n                throw new StarknetPluginError(msg);\n            }\n            // Remove the * from the spec type\n            const inputSpecArrayElement = {\n                name: inputSpec.name,\n                type: inputSpec.type.slice(0, -1)\n            };\n\n            adapted.push(currentValue.length.toString());\n            for (const element of currentValue) {\n                adaptComplexInput(element, inputSpecArrayElement, abi, adapted);\n            }\n        } else if (isArray(inputSpec.type)) {\n            if (!Array.isArray(currentValue)) {\n                const msg = `${functionName}: Expected ${inputSpec.name} to be a ${inputSpec.type}`;\n                throw new StarknetPluginError(msg);\n            }\n\n            // Strip the core::Array::array prefix and suffix\n            const inputSpecArrayElement = {\n                name: inputSpec.name,\n                type: inputSpec.type.slice(\n                    ARRAY_TYPE_PREFIX.length,\n                    inputSpec.type.length - ARRAY_TYPE_SUFFIX.length\n                )\n            };\n\n            adapted.push(currentValue.length.toString());\n            for (const element of currentValue) {\n                adaptComplexInput(element, inputSpecArrayElement, abi, adapted);\n            }\n        } else {\n            const nestedInput = input[inputSpec.name];\n            adaptComplexInput(nestedInput, inputSpec, abi, adapted);\n        }\n\n        lastSpec = inputSpec;\n    }\n    return adapted;\n}\n\n/**\n * Similar to `adaptComplexOutput`, but for input. Collects `input` parts into `adaptedArray`.\n * @param input object to be adapted; containing either a struct, a tuple\n * or in the final case that stops the recursion - a number (felt)\n * @param inputSpec specification on how `input` should be interpreted\n * @param abi the ABI resulting form contract compilation\n * @param adaptedArray the array where stringified args are accumulated\n * @returns nothing; everything is accumulated into `adaptedArray`\n */\nfunction adaptComplexInput(\n    input: any,\n    inputSpec: starknet.Argument,\n    abi: starknet.Abi,\n    adaptedArray: string[]\n): void {\n    const type = inputSpec.type;\n\n    if (input === undefined || input === null) {\n        throw new StarknetPluginError(`${inputSpec.name} is ${input}`);\n    }\n    if (COMMON_NUMERIC_TYPES.includes(type)) {\n        if (isNumeric(input)) {\n            adaptedArray.push(toNumericString(input));\n            return;\n        }\n        const msg = `Expected ${inputSpec.name} to be a felt`;\n        throw new StarknetPluginError(msg);\n    }\n    if (isBool(type)) {\n        const msg = `Expected ${inputSpec.name} to be a boolean or 0/1; got ${input}`;\n        const value = validateAndConvertBooleanInput(input, msg);\n        adaptedArray.push(value);\n        return;\n    }\n\n    if (isU256(type)) {\n        const msg = `Expected ${inputSpec.name} to be numeric; got ${input}`;\n        const values = validateAndConvertU256Input(input, msg);\n        adaptedArray.push(...values);\n        return;\n    }\n\n    if (isTuple(type)) {\n        const memberTypes = extractMemberTypes(type.slice(1, -1));\n        if (isNamedTuple(type)) {\n            // Initialize an array with the user input\n            const inputLen = Object.keys(input || {}).length;\n            if (inputLen !== memberTypes.length) {\n                const msg = `\"${inputSpec.name}\": Expected ${memberTypes.length} member${\n                    memberTypes.length === 1 ? \"\" : \"s\"\n                }, got ${inputLen}.`;\n                throw new StarknetPluginError(msg);\n            }\n\n            for (let i = 0; i < inputLen; i++) {\n                const memberSpec = parseNamedTuple(memberTypes[i]);\n                const nestedInput = input[memberSpec.name];\n                adaptComplexInput(nestedInput, memberSpec, abi, adaptedArray);\n            }\n        } else {\n            if (!Array.isArray(input)) {\n                const msg = `Expected ${inputSpec.name} to be a tuple`;\n                throw new StarknetPluginError(msg);\n            }\n\n            if (input.length != memberTypes.length) {\n                const msg = `\"${inputSpec.name}\": Expected ${memberTypes.length} member${\n                    memberTypes.length === 1 ? \"\" : \"s\"\n                }, got ${input.length}.`;\n                throw new StarknetPluginError(msg);\n            }\n\n            for (let i = 0; i < input.length; ++i) {\n                const memberSpec = { name: `${inputSpec.name}[${i}]`, type: memberTypes[i] };\n                const nestedInput = input[i];\n                adaptComplexInput(nestedInput, memberSpec, abi, adaptedArray);\n            }\n        }\n\n        return;\n    }\n\n    if (isNamedTuple(type)) {\n        const memberSpec = parseNamedTuple(type);\n        const nestedInput = input[memberSpec.name];\n        adaptComplexInput(nestedInput, memberSpec, abi, adaptedArray);\n\n        return;\n    }\n\n    // otherwise a struct\n    adaptStructInput(input, inputSpec, abi, adaptedArray);\n}\n\nfunction adaptStructInput(\n    input: any,\n    inputSpec: starknet.Argument,\n    abi: starknet.Abi,\n    adaptedArray: string[]\n) {\n    const type = inputSpec.type;\n    if (!(type in abi)) {\n        throw new StarknetPluginError(`Type ${type} not present in ABI.`);\n    }\n\n    const struct = <starknet.Struct>abi[type];\n    const countArrays = struct.members.filter((i) => isArrayDeprecated(i.type)).length;\n    const expectedInputCount = struct.members.length - countArrays;\n\n    // Initialize an array with the user input\n    const inputLen = Object.keys(input || {}).length;\n\n    if (expectedInputCount != inputLen) {\n        const msg = `\"${inputSpec.name}\": Expected ${expectedInputCount} member${\n            expectedInputCount === 1 ? \"\" : \"s\"\n        }, got ${inputLen}.`;\n        throw new StarknetPluginError(msg);\n    }\n\n    for (let i = 0; i < struct.members.length; ++i) {\n        const memberSpec = struct.members[i];\n        const nestedInput = input[memberSpec.name];\n        adaptComplexInput(nestedInput, memberSpec, abi, adaptedArray);\n    }\n}\n\n/**\n * resultIndex initially expected to be at value indicating array length\n */\nfunction adaptArray(result: bigint[], resultIndex: number, arrayType: string, abi: starknet.Abi) {\n    const elementType = arrayType.slice(\n        ARRAY_TYPE_PREFIX.length,\n        arrayType.length - ARRAY_TYPE_SUFFIX.length\n    );\n\n    const adaptedArray = [];\n\n    // Iterate over the result array, starting with current `resultIndex`\n    const expectedLength = Number(result[resultIndex++]);\n    for (let i = 0; i < expectedLength; i++) {\n        // Generate a struct with each element of the array and push it to `adaptedArray`\n        const ret = generateComplexOutput(result, resultIndex, elementType, abi);\n        adaptedArray.push(ret.generatedComplex);\n        // Next index is the proper raw index returned from generating the struct, which accounts for nested structs\n        resultIndex = ret.newRawIndex;\n    }\n\n    return {\n        adaptedArray,\n        newResultIndex: resultIndex\n    };\n}\n\n/**\n * Adapts the string resulting from a Starknet CLI function call or server purpose of adapting event\n * This is done according to the actual output type specified by the called function.\n *\n * @param rawResult the actual result in the form of an unparsed string\n * @param outputSpecs array of starknet types in the expected function output\n * @param abi the ABI of the contract whose function was called\n */\nexport function adaptOutputUtil(\n    rawResult: string,\n    outputSpecs: starknet.Argument[],\n    abi: starknet.Abi\n): any {\n    const splitStr = rawResult.split(\" \");\n    const result: bigint[] = [];\n    for (const num of splitStr) {\n        const parsed = num[0] === \"-\" ? BigInt(num.substring(1)) * BigInt(-1) : BigInt(num);\n        result.push(parsed);\n    }\n    let resultIndex = 0;\n    let lastSpec: starknet.Argument = { type: null, name: null };\n    const adapted: StringMap = {};\n\n    for (const outputSpec of outputSpecs) {\n        const currentValue = result[resultIndex];\n        if (COMMON_NUMERIC_TYPES.includes(outputSpec.type)) {\n            adapted[outputSpec.name] = currentValue;\n            resultIndex++;\n        } else if (isBool(outputSpec.type)) {\n            adapted[outputSpec.name] = convertOutputToBoolean(currentValue);\n            resultIndex++;\n        } else if (isU256(outputSpec.type)) {\n            const lo = currentValue;\n            const hi = result[++resultIndex];\n            adapted[outputSpec.name] = convertOutputToU256(lo, hi);\n            resultIndex++;\n        } else if (isArrayDeprecated(outputSpec.type)) {\n            // Assuming lastSpec refers to the array size argument; not checking its name - done during compilation\n            if (lastSpec.type !== \"felt\") {\n                const msg = `Array size argument (felt) must appear right before ${outputSpec.name} (${outputSpec.type}).`;\n                throw new StarknetPluginError(msg);\n            }\n\n            // Remove * from the spec type\n            const outputSpecArrayElementType = outputSpec.type.slice(0, -1);\n            const arrLength = parseInt(adapted[lastSpec.name]);\n\n            const structArray = [];\n\n            // Iterate over the struct array, starting with results at `resultIndex`\n            for (let i = 0; i < arrLength; i++) {\n                // Generate a struct with each element of the array and push it to `structArray`\n                const ret = generateComplexOutput(\n                    result,\n                    resultIndex,\n                    outputSpecArrayElementType,\n                    abi\n                );\n                structArray.push(ret.generatedComplex);\n                // Next index is the proper raw index returned from generating the struct, which accounts for nested structs\n                resultIndex = ret.newRawIndex;\n            }\n            // New resultIndex is the raw index generated from the last struct\n            adapted[outputSpec.name] = structArray;\n        } else if (isArray(outputSpec.type)) {\n            const ret = adaptArray(result, resultIndex, outputSpec.type, abi);\n            resultIndex = ret.newResultIndex;\n            adapted[outputSpec.name] = ret.adaptedArray;\n        } else {\n            const ret = generateComplexOutput(result, resultIndex, outputSpec.type, abi);\n            adapted[outputSpec.name] = ret.generatedComplex;\n            resultIndex = ret.newRawIndex;\n        }\n\n        lastSpec = outputSpec;\n    }\n\n    // If adapted obj (StringMap) has undefined key then return only the value\n    if (outputSpecs.length === 1 && !outputSpecs[0].name) {\n        return adapted.undefined;\n    }\n\n    return adapted;\n}\n\n/**\n * Uses the numbers in the `raw` array to generate a tuple/struct of the provided `type`.\n *\n * @param raw array of `felt` instances (numbers) used as material for generating the complex type\n * @param rawIndex current position within the `raw` array\n * @param type type to extract from `raw`, beginning at `rawIndex`\n * @param abi the ABI from which types are taken\n * @returns an object consisting of the next unused index and the generated tuple/struct itself\n */\nfunction generateComplexOutput(raw: bigint[], rawIndex: number, type: string, abi: starknet.Abi) {\n    if (COMMON_NUMERIC_TYPES.includes(type)) {\n        return {\n            generatedComplex: raw[rawIndex],\n            newRawIndex: rawIndex + 1\n        };\n    }\n\n    if (isBool(type)) {\n        return {\n            generatedComplex: convertOutputToBoolean(raw[rawIndex]),\n            newRawIndex: rawIndex + 1\n        };\n    }\n\n    if (isU256(type)) {\n        return {\n            generatedComplex: convertOutputToU256(raw[rawIndex], raw[rawIndex + 1]),\n            newRawIndex: rawIndex + 2\n        };\n    }\n\n    let generatedComplex: any = null;\n    if (isTuple(type)) {\n        const members = extractMemberTypes(type.slice(1, -1));\n        if (isNamedTuple(type)) {\n            generatedComplex = {};\n            for (const member of members) {\n                const memberSpec = parseNamedTuple(member);\n                const ret = generateComplexOutput(raw, rawIndex, memberSpec.type, abi);\n                generatedComplex[memberSpec.name] = ret.generatedComplex;\n                rawIndex = ret.newRawIndex;\n            }\n        } else {\n            generatedComplex = [];\n            for (const member of members) {\n                const ret = generateComplexOutput(raw, rawIndex, member, abi);\n                generatedComplex.push(ret.generatedComplex);\n                rawIndex = ret.newRawIndex;\n            }\n        }\n    } else if (isArray(type)) {\n        const ret = adaptArray(raw, rawIndex, type, abi);\n        generatedComplex = ret.adaptedArray;\n        rawIndex = ret.newResultIndex;\n    } else {\n        // struct\n        if (!(type in abi)) {\n            throw new StarknetPluginError(`Type ${type} not present in ABI.`);\n        }\n\n        generatedComplex = {};\n        const struct = <starknet.Struct>abi[type];\n        for (const member of struct.members) {\n            const ret = generateComplexOutput(raw, rawIndex, member.type, abi);\n            generatedComplex[member.name] = ret.generatedComplex;\n            rawIndex = ret.newRawIndex;\n        }\n    }\n\n    return {\n        generatedComplex,\n        newRawIndex: rawIndex\n    };\n}\n\n/**\n * Reproduces felt response formating corresponding to the Starknet CLI contract call.\n * Based on https://github.com/starkware-libs/cairo-lang/blob/v0.12.1a0/src/starkware/cairo/lang/tracer/tracer_data.py#L261.\n */\nexport function formatFelt(value: BigNumberish): string {\n    const shiftedValue = ((BigInt(value) + PRIME_FLOOR) % PRIME) - PRIME_FLOOR;\n    const shiftedAbs = shiftedValue < 0n ? -shiftedValue : shiftedValue;\n    if (shiftedAbs < 2 ** 40) return shiftedValue.toString();\n    if (shiftedAbs < 2 ** 100) return num.toHex(shiftedValue);\n    return num.toHex(value);\n}\n"
  },
  {
    "path": "src/cairo1-compiler.ts",
    "content": "import fs from \"fs\";\nimport os from \"os\";\nimport { ProcessResult } from \"@nomiclabs/hardhat-docker\";\nimport shell from \"shelljs\";\nimport path from \"path\";\nimport axios, { AxiosError } from \"axios\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport {\n    CAIRO_COMPILER_BINARY_URL,\n    HIDDEN_PLUGIN_COMPILER_SUBDIR,\n    HIDDEN_PLUGIN_DIR\n} from \"./constants\";\nimport { StarknetConfig } from \"./types/starknet\";\nimport config from \"../config.json\";\nimport tar from \"tar-fs\";\nimport zlib from \"zlib\";\nimport { TaskArguments } from \"hardhat/types\";\n\nexport const exec = (args: string) => {\n    const result = shell.exec(args, {\n        silent: true\n    });\n\n    return {\n        statusCode: result.code,\n        stdout: Buffer.from(result.stdout),\n        stderr: Buffer.from(result.stderr)\n    } as ProcessResult;\n};\n\ninterface CompilerAsset {\n    name: string;\n    isGzipped: boolean;\n}\n\nfunction getCompilerAsset(): CompilerAsset {\n    const platform = os.platform();\n    const arch = os.arch();\n\n    if (platform === \"linux\" && arch === \"x64\") {\n        return {\n            name: \"release-x86_64-unknown-linux-musl.tar.gz\",\n            isGzipped: true\n        };\n    } else if (platform === \"darwin\" && arch === \"arm64\") {\n        return {\n            name: \"release-aarch64-apple-darwin.tar\",\n            isGzipped: false\n        };\n    }\n\n    throw new Error(\n        `Unsupported combination of platform (${platform}) and architecture (${arch}). Consider using a custom compiler (cairo1BinDir in config).`\n    );\n}\n\nexport async function getCairoBinDirPath(cliArgs: TaskArguments, starknetConfig: StarknetConfig) {\n    if (starknetConfig?.cairo1BinDir && starknetConfig?.compilerVersion) {\n        const msg =\n            \"Error in config file. Only one of (starknet.cairo1BinDir, starknet.compilerVersion) can be specified.\";\n        throw new StarknetPluginError(msg);\n    }\n\n    // give precedence to CLI specification\n    const customCairo1BinDir = cliArgs?.cairo1BinDir || starknetConfig?.cairo1BinDir;\n    if (customCairo1BinDir) {\n        assertValidCompilerBinary(customCairo1BinDir, \"starknet-compile\");\n        assertValidCompilerBinary(customCairo1BinDir, \"starknet-sierra-compile\");\n        console.log(`Using cairo compiler at ${customCairo1BinDir}`);\n        return customCairo1BinDir;\n    }\n\n    // default to downloaded binary\n    const compilerVersion = starknetConfig?.compilerVersion || config.CAIRO_COMPILER;\n    const downloadDistDir = getDownloadDistDir(compilerVersion);\n    console.log(`Using downloaded cairo compiler ${compilerVersion}`);\n\n    // download if not present\n    const downloadBinDir = path.join(downloadDistDir, \"cairo\", \"bin\");\n    if (\n        !(\n            isValidCompilerBinary(path.join(downloadBinDir, \"starknet-compile\")) &&\n            isValidCompilerBinary(path.join(downloadBinDir, \"starknet-sierra-compile\"))\n        )\n    ) {\n        await downloadAsset(compilerVersion, downloadDistDir);\n    }\n\n    return downloadBinDir;\n}\n\nfunction assertValidCompilerBinary(binDirPath: string, command: string): void {\n    const compilerBinaryPath = path.join(binDirPath, command);\n    if (!fs.existsSync(compilerBinaryPath)) {\n        throw new StarknetPluginError(`${compilerBinaryPath} not found`);\n    }\n\n    if (!isValidCompilerBinary(compilerBinaryPath)) {\n        throw new StarknetPluginError(`${compilerBinaryPath} is not a valid compiler binary`);\n    }\n}\n\nfunction isValidCompilerBinary(binaryPath: string): boolean {\n    return exec([binaryPath, \"--version\"].join(\" \")).statusCode === 0;\n}\n\nasync function downloadAsset(version: string, distDir: string): Promise<void> {\n    const compilerAsset = getCompilerAsset();\n    const assetUrl = `${CAIRO_COMPILER_BINARY_URL}/v${version}/${compilerAsset.name}`;\n    const resp = await axios\n        .get(assetUrl, {\n            responseType: \"stream\",\n            onDownloadProgress: (progressEvent) => {\n                // periodically inform the user of download progress (printed on a single line)\n                const percentage = Math.round((progressEvent.loaded / progressEvent.total) * 100);\n                process.stdout.write(`Downloading cairo compiler: ${version} ... ${percentage}%\\r`);\n            }\n        })\n        .catch((error) => {\n            const parent = error instanceof AxiosError && error;\n            if (parent.response?.status === 404) {\n                throw new Error(`\\nCould not download cairo ${version}. Make sure that it exists.`);\n            }\n            throw new Error(`\\nError downloading cairo ${version} from ${assetUrl}: ${parent}`);\n        });\n    console.log(`Downloaded cairo compiler ${version}`);\n\n    let pipeline = resp.data;\n    if (compilerAsset.isGzipped) {\n        pipeline = pipeline.pipe(zlib.createGunzip());\n    }\n\n    const extract = tar.extract(distDir);\n    pipeline.pipe(extract);\n\n    return new Promise((resolve, _reject) => {\n        extract.on(\"finish\", resolve);\n    });\n}\n\nfunction getDownloadDistDir(version: string): string {\n    const compilerDownloadPath = path.join(\n        os.homedir(),\n        HIDDEN_PLUGIN_DIR,\n        HIDDEN_PLUGIN_COMPILER_SUBDIR,\n        version\n    );\n    return compilerDownloadPath;\n}\n"
  },
  {
    "path": "src/constants.ts",
    "content": "import config from \"../config.json\";\n\nexport const PLUGIN_NAME = \"Starknet\";\nexport const ABI_SUFFIX = \"_abi.json\";\n\n// Cairo 1 compilation\nexport const CAIRO1_ASSEMBLY_SUFFIX = \".casm\";\nexport const CAIRO1_SIERRA_SUFFIX = \".json\";\nexport const CAIRO1_COMPILE_BIN = \"starknet-compile\";\nexport const CAIRO1_SIERRA_COMPILE_BIN = \"starknet-sierra-compile\";\nexport const SUPPORTED_SCARB_VERSION = config[\"SCARB_VERSION\"];\n\nexport const DEFAULT_STARKNET_SOURCES_PATH = \"contracts\";\nexport const DEFAULT_STARKNET_ARTIFACTS_PATH = \"starknet-artifacts\";\nexport const DEFAULT_STARKNET_ACCOUNT_PATH = \"~/.starknet_accounts\";\nexport const CAIRO_CLI_DOCKER_REPOSITORY = \"shardlabs/cairo-cli\";\nexport const CAIRO_CLI_DEFAULT_DOCKER_IMAGE_TAG = config[\"CAIRO_LANG\"];\nexport const DEVNET_DOCKER_REPOSITORY = \"shardlabs/starknet-devnet\";\nexport const DEFAULT_DEVNET_DOCKER_IMAGE_TAG = config[\"STARKNET_DEVNET\"];\nexport const DEFAULT_DEVNET_CAIRO_VM = \"python\";\nexport const AMARNA_DOCKER_REPOSITORY = \"shramee/amarna\";\nexport const AMARNA_DOCKER_IMAGE_TAG = \"latest\";\nexport const INTEGRATED_DEVNET_URL = \"http://127.0.0.1:5050\";\n\nexport const CAIRO_CLI_DOCKER_REPOSITORY_WITH_TAG = `${CAIRO_CLI_DOCKER_REPOSITORY}:${CAIRO_CLI_DEFAULT_DOCKER_IMAGE_TAG}`;\n\nexport const INTERNAL_ARTIFACTS_DIR = \"contract-artifacts\";\nexport const HIDDEN_PLUGIN_DIR = \".starknet-hardhat-plugin\";\nexport const HIDDEN_PLUGIN_COMPILER_SUBDIR = \"cairo-compiler\";\n\nexport const ALPHA_TESTNET = \"alpha-goerli\";\nexport const ALPHA_TESTNET_2 = \"alpha-goerli2\";\nexport const ALPHA_TESTNET_INTERNALLY = \"alphaGoerli\";\nexport const ALPHA_TESTNET_2_INTERNALLY = \"alphaGoerli2\";\nexport const ALPHA_MAINNET = \"alpha-mainnet\";\nexport const ALPHA_MAINNET_INTERNALLY = \"alphaMainnet\";\nexport const DEFAULT_STARKNET_NETWORK = ALPHA_TESTNET_INTERNALLY;\nexport const ALPHA_URL = \"https://alpha4.starknet.io\";\nexport const ALPHA_GOERLI_URL_2 = \"https://alpha4-2.starknet.io\";\nexport const ALPHA_MAINNET_URL = \"https://alpha-mainnet.starknet.io\";\nexport const INTEGRATED_DEVNET = \"integrated-devnet\";\nexport const INTEGRATED_DEVNET_INTERNALLY = \"integratedDevnet\";\n\nexport const VOYAGER_GOERLI_CONTRACT_API_URL = \"https://goerli.voyager.online/api/contract/\";\nexport const VOYAGER_GOERLI_VERIFIED_URL = \"https://goerli.voyager.online/contract/\";\nexport const VOYAGER_GOERLI_2_CONTRACT_API_URL = \"https://goerli-2.voyager.online/api/contract\";\nexport const VOYAGER_GOERLI_2_VERIFIED_URL = \"https://goerli-2.voyager.online/contract/\";\nexport const VOYAGER_MAINNET_CONTRACT_API_URL = \"https://voyager.online/api/contract/\";\nexport const VOYAGER_MAINNET_VERIFIED_URL = \"https://voyager.online/contract/\";\n\nexport const CAIRO_COMPILER_BINARY_URL =\n    \"https://github.com/starkware-libs/cairo/releases/download\";\n\nexport const CHECK_STATUS_TIMEOUT = 5000; // ms\nexport const CHECK_STATUS_RECOVER_TIMEOUT = 10000; // ms\n\nexport const LEN_SUFFIX_DEPRECATED = \"_len\";\n\nexport const SHORT_STRING_MAX_CHARACTERS = 31;\n\nexport enum TransactionHashPrefix {\n    DECLARE = \"28258975365558885\", // BigInt(\"0x\" + Buffer.from(\"declare\").toString(\"hex\")).toString()\n    DEPLOY = \"110386840629113\",\n    DEPLOY_ACCOUNT = \"2036277798190617858034555652763252\",\n    INVOKE = \"115923154332517\"\n}\n\nexport enum StarknetChainId {\n    MAINNET = \"0x534e5f4d41494e\",\n    TESTNET = \"0x534e5f474f45524c49\",\n    TESTNET2 = \"0x534e5f474f45524c4932\"\n}\n\nexport const PREFIX_TRANSACTION = \"Starknet Transaction\";\n\nexport const TRANSACTION_VERSION = BigInt(1);\nexport const DECLARE_VERSION = BigInt(2);\nexport const QUERY_VERSION = BigInt(2) ** BigInt(128) + TRANSACTION_VERSION;\n\nexport const HEXADECIMAL_REGEX = /^0x[0-9a-fA-F]+?$/;\n\nexport const UDC_ADDRESS = \"0x41A78E741E5AF2FEC34B695679BC6891742439F7AFB8484ECD7766661AD02BF\";\nexport const UDC_DEPLOY_FUNCTION_NAME = \"deployContract\";\n\nexport const ETH_ADDRESS = \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\";\n\nexport const DOCKER_HOST = \"host.docker.internal\";\n"
  },
  {
    "path": "src/devnet-utils.ts",
    "content": "import axios, { AxiosResponse, Method } from \"axios\";\nimport { Devnet, HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport { selector } from \"starknet\";\n\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport { MintResponse, L2ToL1Message } from \"./starknet-types\";\nimport { Numeric } from \"./types\";\nimport { numericToHexString } from \"./utils\";\n\ninterface L1ToL2Message {\n    address: string;\n    args: {\n        from_address: string;\n        nonce: number;\n        payload: Array<number>;\n        selector: string;\n        to_address: string;\n    };\n    block_hash: string;\n    block_number: number;\n    event: string;\n    log_index: number;\n    transaction_hash: string;\n    transaction_index: number;\n}\n\nexport interface FlushResponse {\n    l1_provider: string;\n    consumed_messages: {\n        from_l1: Array<L1ToL2Message>;\n        from_l2: Array<L2ToL1Message>;\n    };\n}\n\nexport interface LoadL1MessagingContractResponse {\n    address: string;\n    l1_provider: string;\n}\n\nexport interface L1ToL2MockTxRequest {\n    l2_contract_address: string;\n    l1_contract_address: string;\n    entry_point_selector: string;\n    payload: Array<number>;\n    nonce: string;\n    paidFeeOnL1: string;\n}\n\nexport interface L1ToL2MockTxResponse {\n    transaction_hash: string;\n}\n\nexport interface L2ToL1MockTxRequest {\n    l2_contract_address: string;\n    l1_contract_address: string;\n    payload: Array<number>;\n}\n\nexport interface L2ToL1MockTxResponse {\n    message_hash: string;\n}\n\nexport interface SetTimeResponse {\n    block_timestamp: number;\n}\n\nexport interface NewBlockResponse {\n    block_hash: string;\n}\n\nexport interface IncreaseTimeResponse {\n    timestamp_increased_by: number;\n    block_hash: string;\n}\n\nexport interface PredeployedAccount {\n    initial_balance: number;\n    private_key: string;\n    public_key: string;\n    address: string;\n}\n\nexport class DevnetUtils implements Devnet {\n    private axiosInstance = axios.create({\n        baseURL: this.endpoint,\n        timeout: this.hre.config.starknet.requestTimeout\n    });\n\n    constructor(private hre: HardhatRuntimeEnvironment) {}\n\n    private get endpoint() {\n        return `${this.hre.starknet.networkConfig.url}`;\n    }\n\n    private async requestHandler<T>(\n        url: string,\n        method: Method,\n        data?: unknown\n    ): Promise<AxiosResponse> {\n        try {\n            // Make the request\n            return this.axiosInstance.request<T>({\n                url,\n                method,\n                data\n            });\n        } catch (error) {\n            const parent = error instanceof Error && error;\n            const msg = `Request failed: Could not ${method} ${url}. This is a Devnet-specific functionality.\nMake sure you really want to interact with Devnet and that it is running and available at ${this.endpoint}`;\n            throw new StarknetPluginError(msg, parent);\n        }\n    }\n\n    public async restart() {\n        await this.requestHandler<void>(\"/restart\", \"POST\");\n    }\n\n    public async flush() {\n        const response = await this.requestHandler<FlushResponse>(\"/postman/flush\", \"POST\");\n        return response.data;\n    }\n\n    public async loadL1MessagingContract(networkUrl: string, address?: string, networkId?: string) {\n        const body = {\n            networkId,\n            address,\n            networkUrl\n        };\n\n        const response = await this.requestHandler<LoadL1MessagingContractResponse>(\n            \"/postman/load_l1_messaging_contract\",\n            \"POST\",\n            body\n        );\n        return response.data;\n    }\n\n    public async sendMessageToL2(\n        l2ContractAddress: string,\n        functionName: string,\n        l1ContractAddress: string,\n        payload: Numeric[],\n        nonce: Numeric,\n        paidFeeOnL1: Numeric\n    ) {\n        const body = {\n            l2_contract_address: l2ContractAddress,\n            entry_point_selector: selector.getSelectorFromName(functionName),\n            l1_contract_address: l1ContractAddress,\n            payload: payload.map((item) => numericToHexString(item)),\n            nonce: numericToHexString(nonce),\n            paid_fee_on_l1: numericToHexString(paidFeeOnL1)\n        };\n\n        const response = await this.requestHandler<L1ToL2MockTxResponse>(\n            \"/postman/send_message_to_l2\",\n            \"POST\",\n            body\n        );\n        return response.data;\n    }\n\n    public async consumeMessageFromL2(\n        l2ContractAddress: string,\n        l1ContractAddress: string,\n        payload: Numeric[]\n    ) {\n        const body = {\n            l2_contract_address: l2ContractAddress,\n            l1_contract_address: l1ContractAddress,\n            payload: payload.map((item) => numericToHexString(item))\n        };\n\n        const response = await this.requestHandler<L2ToL1MockTxResponse>(\n            \"/postman/consume_message_from_l2\",\n            \"POST\",\n            body\n        );\n        return response.data;\n    }\n\n    public async increaseTime(seconds: number) {\n        const response = await this.requestHandler<IncreaseTimeResponse>(\"/increase_time\", \"POST\", {\n            time: seconds\n        });\n        return response.data;\n    }\n\n    public async setTime(seconds: number) {\n        const response = await this.requestHandler<SetTimeResponse>(\"/set_time\", \"POST\", {\n            time: seconds\n        });\n        return response.data;\n    }\n\n    public async getPredeployedAccounts() {\n        const response = await this.requestHandler<Array<PredeployedAccount>>(\n            \"/predeployed_accounts\",\n            \"GET\"\n        );\n        return response.data;\n    }\n\n    public async dump(path: string) {\n        const response = await this.requestHandler<void>(\"/dump\", \"POST\", {\n            path\n        });\n        return response.data;\n    }\n\n    public async load(path: string) {\n        const response = await this.requestHandler<void>(\"/load\", \"POST\", {\n            path\n        });\n        return response.data;\n    }\n\n    public async createBlock() {\n        const response = await this.requestHandler<NewBlockResponse>(\"/create_block\", \"POST\");\n        return response.data;\n    }\n\n    public async mint(address: string, amount: number, lite = true) {\n        const response = await this.requestHandler<MintResponse>(\"/mint\", \"POST\", {\n            amount,\n            address,\n            lite\n        });\n        return response.data;\n    }\n}\n"
  },
  {
    "path": "src/extend-utils.ts",
    "content": "import { Block, HardhatRuntimeEnvironment, Transaction } from \"hardhat/types\";\nimport path from \"path\";\nimport { uint256 } from \"starknet\";\n\nimport { handleInternalContractArtifacts } from \"./account-utils\";\nimport {\n    ABI_SUFFIX,\n    CAIRO1_ASSEMBLY_SUFFIX,\n    ETH_ADDRESS,\n    SHORT_STRING_MAX_CHARACTERS\n} from \"./constants\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport { TransactionReceipt, TransactionTrace } from \"./starknet-types\";\nimport { BlockIdentifier, NonceQueryOptions, StarknetContractFactory } from \"./types\";\nimport { checkArtifactExists, findPath } from \"./utils\";\n\nexport async function getContractFactoryUtil(hre: HardhatRuntimeEnvironment, contractPath: string) {\n    const artifactsPath = hre.config.paths.starknetArtifacts;\n    checkArtifactExists(artifactsPath);\n\n    contractPath = contractPath.replace(/\\.[^/.]+$/, \"\"); // remove extension\n\n    const metadataSearchTarget = path.join(\n        `${contractPath}.cairo`,\n        `${path.basename(contractPath)}.json`\n    );\n\n    const metadataPath = await findPath(artifactsPath, metadataSearchTarget);\n    if (!metadataPath) {\n        throw new StarknetPluginError(\n            `Could not find JSON artifact for \"${contractPath}.cairo\". Consider recompiling your contracts.`\n        );\n    }\n    const casmSearchTarget = path.join(\n        `${contractPath}.cairo`,\n        `${path.basename(contractPath)}${CAIRO1_ASSEMBLY_SUFFIX}`\n    );\n    const casmPath = await findPath(artifactsPath, casmSearchTarget);\n\n    const abiSearchTarget = path.join(\n        `${contractPath}.cairo`,\n        `${path.basename(contractPath)}${ABI_SUFFIX}`\n    );\n    const abiPath = await findPath(artifactsPath, abiSearchTarget);\n    if (!abiPath) {\n        throw new StarknetPluginError(\n            `Could not find ABI JSON artifact for \"${contractPath}.cairo\". Consider recompiling your contracts.`\n        );\n    }\n\n    return new StarknetContractFactory({\n        metadataPath,\n        casmPath,\n        abiPath,\n        hre\n    });\n}\n\nexport function shortStringToBigIntUtil(convertibleString: string) {\n    if (!convertibleString) {\n        throw new StarknetPluginError(\"A non-empty string must be provided\");\n    }\n\n    if (convertibleString.length > SHORT_STRING_MAX_CHARACTERS) {\n        const msg = `Short strings must have a max of ${SHORT_STRING_MAX_CHARACTERS} characters.`;\n        throw new StarknetPluginError(msg);\n    }\n\n    const invalidChars: { [key: string]: boolean } = {};\n    const charArray = [];\n    for (const c of convertibleString.split(\"\")) {\n        const charCode = c.charCodeAt(0);\n        if (charCode > 127) {\n            invalidChars[c] = true;\n        }\n        charArray.push(charCode.toString(16));\n    }\n\n    const invalidCharArray = Object.keys(invalidChars);\n    if (invalidCharArray.length) {\n        const msg = `Non-standard-ASCII character${\n            invalidCharArray.length === 1 ? \"\" : \"s\"\n        }: ${invalidCharArray.join(\", \")}`;\n        throw new StarknetPluginError(msg);\n    }\n\n    return BigInt(\"0x\" + charArray.join(\"\"));\n}\n\nexport function bigIntToShortStringUtil(convertibleBigInt: bigint) {\n    return Buffer.from(convertibleBigInt.toString(16), \"hex\").toString();\n}\n\nexport async function getTransactionUtil(\n    txHash: string,\n    hre: HardhatRuntimeEnvironment\n): Promise<Transaction> {\n    const executed = await hre.starknetWrapper.getTransaction({\n        hash: txHash\n    });\n    if (executed.statusCode) {\n        const msg = `Could not get the transaction. ${executed.stderr.toString()}`;\n        throw new StarknetPluginError(msg);\n    }\n    const txReceipt = JSON.parse(executed.stdout.toString()) as Transaction;\n    return txReceipt;\n}\n\nexport async function getTransactionReceiptUtil(\n    txHash: string,\n    hre: HardhatRuntimeEnvironment\n): Promise<TransactionReceipt> {\n    const executed = await hre.starknetWrapper.getTransactionReceipt({\n        hash: txHash\n    });\n    if (executed.statusCode) {\n        const msg = `Could not get the transaction receipt. Error: ${executed.stderr.toString()}`;\n        throw new StarknetPluginError(msg);\n    }\n    const txReceipt = JSON.parse(executed.stdout.toString()) as TransactionReceipt;\n    return txReceipt;\n}\n\nexport async function getTransactionTraceUtil(\n    txHash: string,\n    hre: HardhatRuntimeEnvironment\n): Promise<TransactionTrace> {\n    const executed = await hre.starknetWrapper.getTransactionTrace({\n        hash: txHash\n    });\n\n    if (executed.statusCode) {\n        const msg = `Could not get the transaction trace. Error: ${executed.stderr.toString()}`;\n        throw new StarknetPluginError(msg);\n    }\n    const txTrace = JSON.parse(executed.stdout.toString()) as TransactionTrace;\n    return txTrace;\n}\n\nexport async function getBlockUtil(\n    hre: HardhatRuntimeEnvironment,\n    identifier?: BlockIdentifier\n): Promise<Block> {\n    const blockOptions = {\n        feederGatewayUrl: hre.starknet.networkConfig.url,\n        gatewayUrl: hre.starknet.networkConfig.url,\n        number: identifier?.blockNumber,\n        hash: identifier?.blockHash\n    };\n\n    if (identifier && typeof identifier !== \"object\") {\n        const msg = `Invalid identifier provided to getBlock: ${identifier}`;\n        throw new StarknetPluginError(msg);\n    }\n\n    if (blockOptions.number == null && !blockOptions.hash) {\n        blockOptions.number = \"latest\";\n    }\n\n    const executed = await hre.starknetWrapper.getBlock(blockOptions);\n\n    if (executed.statusCode) {\n        const msg = `Could not get block. Error: ${executed.stderr.toString()}`;\n        throw new StarknetPluginError(msg);\n    }\n    const block = JSON.parse(executed.stdout.toString()) as Block;\n    return block;\n}\n\nexport async function getNonceUtil(\n    hre: HardhatRuntimeEnvironment,\n    address: string,\n    options: NonceQueryOptions\n): Promise<number> {\n    const executed = await hre.starknetWrapper.getNonce({\n        address,\n        ...options\n    });\n\n    if (executed.statusCode) {\n        const msg = `Could not get nonce. Error: ${executed.stderr.toString()}`;\n        throw new StarknetPluginError(msg);\n    }\n\n    return parseInt(executed.stdout.toString());\n}\n\nexport async function getBalanceUtil(\n    address: string,\n    hre: HardhatRuntimeEnvironment\n): Promise<bigint> {\n    const contractPath = handleInternalContractArtifacts(\"Token\", \"ERC20\", \"\", hre);\n    const contractFactory = await hre.starknet.getContractFactory(contractPath);\n    const ethContract = contractFactory.getContractAt(ETH_ADDRESS);\n\n    const result = await ethContract.call(\"balanceOf\", { account: address });\n    return uint256.uint256ToBN(result.balance);\n}\n"
  },
  {
    "path": "src/external-server/create-devnet-wrapper.ts",
    "content": "import { HardhatNetworkConfig, HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport { StarknetPluginError } from \"../starknet-plugin-error\";\n\nimport {\n    DEFAULT_DEVNET_DOCKER_IMAGE_TAG,\n    DEVNET_DOCKER_REPOSITORY,\n    INTEGRATED_DEVNET,\n    INTEGRATED_DEVNET_URL\n} from \"../constants\";\nimport { getDevnetImageTagByArch, getNetwork } from \"../utils\";\nimport { DockerDevnet } from \"./docker-devnet\";\nimport { VenvDevnet } from \"./venv-devnet\";\nimport { ExternalServer } from \"./external-server\";\nimport { Image } from \"@nomiclabs/hardhat-docker\";\n\nfunction getDevnetImage(dockerizedVersion: string = DEFAULT_DEVNET_DOCKER_IMAGE_TAG): Image {\n    let repository: string = undefined;\n    let tag: string = undefined;\n\n    // check if of format <image>:<tag>\n    if (dockerizedVersion.includes(\":\")) {\n        const imageParts = dockerizedVersion.split(\":\");\n        if (imageParts.length !== 2) {\n            const msg = `Invalid dockerizedVersion: \"${dockerizedVersion}\". Expected <tag> or <image>:<tag>`;\n            throw new StarknetPluginError(msg);\n        }\n        repository = imageParts[0];\n        tag = imageParts[1];\n    } else {\n        // treat as a devnet-py tag\n        repository = DEVNET_DOCKER_REPOSITORY;\n        tag = getDevnetImageTagByArch(dockerizedVersion);\n    }\n\n    return { repository, tag };\n}\n\nexport function createIntegratedDevnet(hre: HardhatRuntimeEnvironment): ExternalServer {\n    const devnetNetwork = getNetwork<HardhatNetworkConfig>(\n        INTEGRATED_DEVNET,\n        hre.config.networks,\n        `networks[\"${INTEGRATED_DEVNET}\"]`\n    );\n    const { hostname, port } = new URL(devnetNetwork.url || INTEGRATED_DEVNET_URL);\n\n    if (hostname !== \"localhost\" && hostname !== \"127.0.0.1\") {\n        throw new StarknetPluginError(\"Integrated devnet works only with localhost and 127.0.0.1\");\n    }\n\n    if (devnetNetwork.venv) {\n        return new VenvDevnet(\n            devnetNetwork.venv,\n            hostname,\n            port,\n            devnetNetwork?.args,\n            devnetNetwork?.stdout,\n            devnetNetwork?.stderr,\n            devnetNetwork.vmLang\n        );\n    }\n\n    if (hostname === \"localhost\") {\n        throw new StarknetPluginError(\n            \"Dockerized integrated devnet works only with host 127.0.0.1\"\n        );\n    }\n\n    const image = getDevnetImage(devnetNetwork.dockerizedVersion);\n\n    return new DockerDevnet(\n        image,\n        hostname,\n        port,\n        devnetNetwork?.args,\n        devnetNetwork?.stdout,\n        devnetNetwork?.stderr,\n        devnetNetwork.vmLang\n    );\n}\n"
  },
  {
    "path": "src/external-server/docker-amarna.ts",
    "content": "import { HardhatDocker, Image } from \"@nomiclabs/hardhat-docker\";\nimport { spawnSync } from \"child_process\";\nimport * as fs from \"fs\";\nimport { HardhatRuntimeEnvironment } from \"hardhat/types\";\n\nconst DEFAULT_OUTPUT = \"out.sarif\";\n\nexport class AmarnaDocker {\n    useShell = false;\n    container: string;\n    docker: HardhatDocker;\n\n    /**\n     * @param image the Docker image to be used for running the container\n     * @param cairoPaths the paths specified in hardhat config cairoPaths\n     */\n    constructor(\n        private image: Image,\n        private rootPath: string,\n        private cairoPaths: string[],\n        private hre: HardhatRuntimeEnvironment\n    ) {\n        this.container = \"amarna-container-\" + Math.random().toString().slice(2);\n    }\n\n    protected getCommand(): string[] {\n        let cmd = [\"amarna\", \".\", \"-o\", DEFAULT_OUTPUT];\n\n        if (this.useShell) {\n            // Run ./amarna.sh file for custom args\n            if (fs.existsSync(`${this.rootPath}/amarna.sh`)) {\n                cmd = [\"./amarna.sh\"];\n            } else {\n                console.warn(\n                    \"amarna.sh file not found in the project directory.\\n\",\n                    \"Add amarna.sh file with amarna command to run in the container.\\n\",\n                    \"Running the container with default amarna script.`\"\n                );\n            }\n        }\n        return cmd;\n    }\n\n    cairoPathBindings(binds: { [x: string]: string }, dockerArgs: string[]) {\n        const { cairoPaths } = this;\n        if (cairoPaths.length) {\n            const cairoPathsEnv: string[] = [];\n            cairoPaths.forEach((path, i) => {\n                const cPath = `/src/cairo-paths-${i}`;\n                binds[path] = cPath;\n                cairoPathsEnv.push(cPath);\n            });\n\n            dockerArgs.push(\"--env\");\n            dockerArgs.push(`CAIRO_PATH=${cairoPathsEnv.join(\":\")}`);\n        }\n    }\n\n    private async ensureDockerImage(formattedImage: string): Promise<void> {\n        if (!(await this.docker.hasPulledImage(this.image))) {\n            console.log(`Pulling amarna image ${formattedImage}.`);\n            await this.docker.pullImage(this.image);\n        }\n    }\n\n    private async prepareDockerArgs(): Promise<string[]> {\n        const { rootPath, container } = this;\n        const formattedImage = `${this.image.repository}:${this.image.tag}`;\n        const binds = {\n            [rootPath]: \"/src\"\n        };\n\n        const cmd = this.getCommand();\n\n        const dockerArgs = [\"--rm\", \"-i\", \"--name\", container];\n\n        this.cairoPathBindings(binds, dockerArgs);\n\n        Object.keys(binds).forEach((k) => {\n            dockerArgs.push(\"-v\");\n            dockerArgs.push(`${k}:${binds[k]}`);\n        });\n\n        const entrypoint = cmd.shift();\n\n        await this.ensureDockerImage(formattedImage);\n\n        return [...dockerArgs, \"--entrypoint\", entrypoint, formattedImage, ...cmd];\n    }\n\n    public async run(args: { script?: boolean }) {\n        if (!this.docker) {\n            this.docker = await HardhatDocker.create();\n        }\n\n        this.useShell = !!args.script;\n\n        const dockerArgs = await this.prepareDockerArgs();\n\n        console.log(\"Running amarna, this may take a while.\");\n\n        const result = spawnSync(\"docker\", [\"run\", ...dockerArgs]);\n\n        const defaultOutput = ` at ${this.rootPath}/${DEFAULT_OUTPUT}`;\n        console.log(`Sarif file generated${this.useShell ? \"\" : defaultOutput}`);\n\n        // Output the output/error for user to review.\n        result.stdout && console.log(result.stdout.toString());\n        result.stderr && console.error(result.stderr.toString());\n    }\n}\n"
  },
  {
    "path": "src/external-server/docker-devnet.ts",
    "content": "import { Image } from \"@nomiclabs/hardhat-docker\";\nimport { DockerServer } from \"./docker-server\";\n\nexport class DockerDevnet extends DockerServer {\n    private vmLang?: string;\n\n    constructor(\n        image: Image,\n        host: string,\n        port: string,\n        private devnetArgs?: string[],\n        stdout?: string,\n        stderr?: string,\n        vmLang?: string\n    ) {\n        super(image, host, port, \"is_alive\", \"integrated-devnet\", devnetArgs, stdout, stderr);\n        this.vmLang = vmLang;\n    }\n\n    protected async getDockerArgs(): Promise<string[]> {\n        return [\n            \"-p\",\n            `${this.host}:${this.port}:${this.port}`,\n            \"-e\",\n            `STARKNET_DEVNET_CAIRO_VM=${this.vmLang}`\n        ];\n    }\n\n    protected async getContainerArgs(): Promise<string[]> {\n        return this.devnetArgs || [];\n    }\n}\n"
  },
  {
    "path": "src/external-server/docker-server.ts",
    "content": "import { HardhatDocker, Image } from \"@nomiclabs/hardhat-docker\";\nimport { ChildProcess, CommonSpawnOptions, spawn, spawnSync } from \"child_process\";\nimport { ExternalServer } from \"./external-server\";\n\nexport abstract class DockerServer extends ExternalServer {\n    private docker: HardhatDocker;\n    protected containerName: string;\n\n    constructor(\n        protected image: Image,\n        host: string,\n        externalPort: string,\n        isAliveURL: string,\n        containerName: string,\n        protected args?: string[],\n        stdout?: string,\n        stderr?: string\n    ) {\n        // to make name unique and allow multiple simultaneous instances\n        containerName += \"-\" + Math.random().toString().slice(2);\n        super(host, externalPort, isAliveURL, containerName, stdout, stderr);\n        this.containerName = containerName;\n    }\n\n    protected async pullImage() {\n        if (!this.docker) {\n            this.docker = await HardhatDocker.create();\n        }\n\n        if (!(await this.docker.hasPulledImage(this.image))) {\n            console.log(`Pulling image ${HardhatDocker.imageToRepoTag(this.image)}`);\n            await this.docker.pullImage(this.image);\n        }\n    }\n\n    protected async spawnChildProcess(options?: CommonSpawnOptions): Promise<ChildProcess> {\n        await this.pullImage();\n\n        const formattedImage = `${this.image.repository}:${this.image.tag}`;\n\n        const args = [\n            \"run\",\n            \"--rm\",\n            \"--name\",\n            this.containerName,\n            ...(await this.getDockerArgs()),\n            formattedImage,\n            ...(await this.getContainerArgs())\n        ];\n\n        return spawn(\"docker\", args, options);\n    }\n\n    /**\n     * CLI arguments passed to the `docker` command.\n     */\n    protected abstract getDockerArgs(): Promise<Array<string>>;\n\n    /**\n     * CLI arguments passed to the docker container.\n     */\n    protected abstract getContainerArgs(): Promise<Array<string>>;\n\n    protected cleanup(): void {\n        spawnSync(\"docker\", [\"kill\", this.containerName]);\n        this.childProcess?.kill();\n    }\n}\n"
  },
  {
    "path": "src/external-server/external-server.ts",
    "content": "import axios from \"axios\";\nimport net from \"net\";\nimport { ChildProcess, spawnSync, CommonSpawnOptions } from \"child_process\";\nimport { StarknetPluginError } from \"../starknet-plugin-error\";\nimport { IntegratedDevnetLogger } from \"./integrated-devnet-logger\";\nimport { StringMap } from \"../types\";\nimport { HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport axiosRetry from \"axios-retry\";\n\nfunction sleep(amountMillis: number): Promise<void> {\n    return new Promise((resolve) => {\n        setTimeout(resolve, amountMillis);\n    });\n}\n\nfunction isFreePort(port: number): Promise<boolean> {\n    return new Promise((accept, reject) => {\n        const sock = net.createConnection(port);\n        sock.once(\"connect\", () => {\n            sock.end();\n            accept(false);\n        });\n        sock.once(\"error\", (e: NodeJS.ErrnoException) => {\n            sock.destroy();\n            if (e.code === \"ECONNREFUSED\") {\n                accept(true);\n            } else {\n                reject(e);\n            }\n        });\n    });\n}\n\nexport async function getFreePort(): Promise<string> {\n    const defaultDevnetPort = 5050; // starting here to avoid conflicts\n    const step = 1000;\n    const maxPort = 65535;\n    for (let port = defaultDevnetPort + step; port <= maxPort; port += step) {\n        if (await isFreePort(port)) {\n            return port.toString();\n        }\n    }\n\n    throw new StarknetPluginError(\"Could not find a free port, try rerunning your command!\");\n}\n\nexport abstract class ExternalServer {\n    protected childProcess: ChildProcess;\n    private connected = false;\n    private connecting = false; // Flag indicating whether the proxy server is currently in the process of connecting\n    private lastError: string = null;\n    private _isDockerDesktop: boolean = null;\n\n    constructor(\n        protected host: string,\n        protected port: string | null,\n        private isAliveURL: string,\n        protected processName: string,\n        protected stdout?: string,\n        protected stderr?: string\n    ) {\n        ExternalServer.cleanupFns.push(this.cleanup.bind(this));\n    }\n\n    public get isDockerDesktop(): boolean {\n        if (this._isDockerDesktop === null) {\n            this._isDockerDesktop = this.getIsDockerDesktop();\n        }\n        return this._isDockerDesktop;\n    }\n\n    /**\n     * Check if docker is Docker Desktop\n     */\n    private getIsDockerDesktop(): boolean {\n        const res = spawnSync(\"docker\", [\"system\", \"info\"], { encoding: \"utf8\" });\n        //stdout is null when docker command doesn't exists\n        return res.stdout?.includes(\"Operating System: Docker Desktop\");\n    }\n\n    public get url() {\n        return `http://${this.host}:${this.port}`;\n    }\n\n    protected static cleanupFns: Array<() => void> = [];\n\n    public static cleanAll(): void {\n        this.cleanupFns.forEach((fn) => fn());\n    }\n\n    protected abstract spawnChildProcess(options?: CommonSpawnOptions): Promise<ChildProcess>;\n\n    protected abstract cleanup(): void;\n\n    public async start(): Promise<void> {\n        if (await this.isServerAlive()) {\n            const msg = `Cannot spawn ${this.processName}: ${this.url} already occupied.`;\n            throw new StarknetPluginError(msg);\n        }\n\n        this.childProcess = await this.spawnChildProcess();\n        const logger = new IntegratedDevnetLogger(this.stdout, this.stderr);\n        this.childProcess.stdout.on(\"data\", async (chunk) => {\n            chunk = chunk.toString();\n            await logger.logHandler(this.stdout, chunk);\n        });\n\n        // capture the most recent message from stderr\n        this.childProcess.stderr.on(\"data\", async (chunk) => {\n            chunk = chunk.toString();\n            await logger.logHandler(this.stderr, chunk);\n            this.lastError = chunk;\n        });\n\n        return new Promise((resolve, reject) => {\n            // called on successful start of the child process\n            this.childProcess.on(\"spawn\", async () => {\n                const startTime = new Date().getTime();\n                const maxWaitMillis = 60_000;\n                const oneSleepMillis = 500;\n\n                // keep checking until process has failed/exited\n                while (this.childProcess) {\n                    const elapsedMillis = new Date().getTime() - startTime;\n                    if (elapsedMillis >= maxWaitMillis) {\n                        const msg = `${this.processName} connection timed out!`;\n                        reject(new StarknetPluginError(msg));\n                        break;\n                    } else if (await this.isServerAlive()) {\n                        this.connected = true;\n                        resolve();\n                        break;\n                    } else {\n                        await sleep(oneSleepMillis);\n                    }\n                }\n            });\n\n            // this only happens if childProcess completely fails to start\n            this.childProcess.on(\"error\", (error) => {\n                this.childProcess = null;\n                reject(error);\n            });\n\n            // handle unexpected close of process\n            this.childProcess.on(\"close\", (code) => {\n                const isAbnormalExit = this.childProcess != null;\n                this.childProcess = null;\n                if (code !== 0 && isAbnormalExit) {\n                    const circumstance = this.connected ? \"running\" : \"connecting\";\n                    const moreInfo = logger.isFile(this.stderr)\n                        ? \"More error info in \" + this.stderr\n                        : \"\";\n                    const msg = `${this.processName} exited with code=${code} while ${circumstance}. ${this.lastError}\\n${moreInfo}`;\n                    throw new StarknetPluginError(msg);\n                }\n            });\n        });\n    }\n\n    public stop() {\n        if (!this.childProcess) {\n            return;\n        }\n\n        this.cleanup();\n        this.childProcess = null;\n    }\n\n    private async isServerAlive() {\n        if (this.port === null) return false;\n        try {\n            await axios.get(`${this.url}/${this.isAliveURL}`);\n            return true;\n        } catch (err: unknown) {\n            // cannot connect, so address is not occupied\n            return false;\n        }\n    }\n\n    public async post<T>(data: StringMap): Promise<T> {\n        await this.ensurePort();\n        await this.ensureStarted();\n\n        // The default value of retries, which is 3, does not work on CircleCI\n        axiosRetry(axios, { retries: 5, retryDelay: axiosRetry.exponentialDelay });\n        const hre: HardhatRuntimeEnvironment = await import(\"hardhat\");\n\n        try {\n            const response = await axios.post<T>(this.url, data, {\n                timeout: hre.config.starknet.requestTimeout\n            });\n            return response.data;\n        } catch (error) {\n            const parent = error instanceof Error && error;\n            const msg = `Error in interaction with Starknet CLI proxy server\\n${error}`;\n            throw new StarknetPluginError(msg, parent);\n        }\n    }\n\n    private async ensurePort(): Promise<void> {\n        if (this.port) {\n            return;\n        }\n        this.port = await getFreePort();\n    }\n\n    private async ensureStarted(): Promise<void> {\n        if (this.connected || this.connecting) {\n            return;\n        }\n        this.connecting = true;\n        await this.start();\n        this.connecting = false;\n    }\n}\n"
  },
  {
    "path": "src/external-server/index.ts",
    "content": "export { ExternalServer } from \"./external-server\";\nexport { createIntegratedDevnet } from \"./create-devnet-wrapper\";\n"
  },
  {
    "path": "src/external-server/integrated-devnet-logger.ts",
    "content": "import * as path from \"path\";\nimport * as fs from \"fs\";\n\nexport class IntegratedDevnetLogger {\n    constructor(protected stdout?: string, protected stderr?: string) {\n        this.checkFileExists(this.stdout);\n        this.checkFileExists(this.stderr);\n    }\n\n    // Checks if the file exists\n    private async checkFileExists(filePath: string): Promise<void> {\n        if (!filePath || filePath === \"STDOUT\" || filePath === \"STDERR\") return;\n        const file = path.resolve(filePath);\n        // Create the file if it doesn't exist\n        const dir = path.dirname(file);\n        if (!fs.existsSync(dir)) {\n            await fs.promises.mkdir(dir, { recursive: true });\n        }\n\n        await fs.promises.writeFile(file, \"\");\n    }\n\n    public async logHandler(logTarget: string, message: string): Promise<void> {\n        if (!logTarget) return;\n\n        if (logTarget === \"STDOUT\") {\n            console.log(message);\n            return;\n        }\n\n        if (logTarget === \"STDERR\") {\n            console.error(message);\n            return;\n        }\n\n        // Append the message to the target log file\n        this.appendLogToFile(logTarget, message);\n    }\n\n    public isFile(file: string): boolean {\n        return fs.existsSync(file);\n    }\n\n    // Appends the message to the file\n    private async appendLogToFile(file: string, message: string): Promise<void> {\n        await fs.promises.appendFile(file, message);\n    }\n}\n"
  },
  {
    "path": "src/external-server/venv-devnet.ts",
    "content": "import { ChildProcess, spawn } from \"child_process\";\n\nimport { getPrefixedCommand, normalizeVenvPath } from \"../utils/venv\";\nimport { ExternalServer } from \"./external-server\";\n\nexport class VenvDevnet extends ExternalServer {\n    private command: string;\n    private args?: string[];\n    private vmLang?: string;\n\n    constructor(\n        venvPath: string,\n        host: string,\n        port: string,\n        args?: string[],\n        stdout?: string,\n        stderr?: string,\n        vmLang?: string\n    ) {\n        super(host, port, \"is_alive\", \"integrated-devnet\", stdout, stderr);\n\n        this.command = \"starknet-devnet\";\n        this.args = args;\n        this.vmLang = vmLang;\n\n        if (venvPath !== \"active\") {\n            this.command = getPrefixedCommand(normalizeVenvPath(venvPath), this.command);\n        }\n    }\n\n    protected async spawnChildProcess(): Promise<ChildProcess> {\n        const args = [\"--host\", this.host, \"--port\", this.port].concat(this.args || []);\n        const options = { env: { PATH: process.env.PATH, STARKNET_DEVNET_CAIRO_VM: this.vmLang } };\n        return spawn(this.command, args, options);\n    }\n\n    protected cleanup(): void {\n        this.childProcess?.kill();\n    }\n}\n"
  },
  {
    "path": "src/index.ts",
    "content": "import * as path from \"path\";\nimport { task, extendEnvironment, extendConfig } from \"hardhat/config\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport { lazyObject } from \"hardhat/plugins\";\nimport {\n    ConfigurableTaskDefinition,\n    HardhatConfig,\n    HardhatNetworkConfig,\n    HardhatRuntimeEnvironment,\n    HardhatUserConfig\n} from \"hardhat/types\";\nimport exitHook from \"exit-hook\";\n\nimport \"./type-extensions\";\nimport {\n    DEFAULT_STARKNET_SOURCES_PATH,\n    DEFAULT_STARKNET_ARTIFACTS_PATH,\n    CAIRO_CLI_DOCKER_REPOSITORY,\n    AMARNA_DOCKER_REPOSITORY,\n    AMARNA_DOCKER_IMAGE_TAG,\n    ALPHA_URL,\n    ALPHA_GOERLI_URL_2,\n    ALPHA_MAINNET_URL,\n    VOYAGER_GOERLI_CONTRACT_API_URL,\n    VOYAGER_MAINNET_CONTRACT_API_URL,\n    DEFAULT_STARKNET_NETWORK,\n    INTEGRATED_DEVNET_URL,\n    VOYAGER_GOERLI_VERIFIED_URL,\n    VOYAGER_MAINNET_VERIFIED_URL,\n    VOYAGER_GOERLI_2_CONTRACT_API_URL,\n    VOYAGER_GOERLI_2_VERIFIED_URL,\n    StarknetChainId,\n    SUPPORTED_SCARB_VERSION\n} from \"./constants\";\nimport {\n    adaptPath,\n    getCairoCliImageTagByArch,\n    getDefaultHardhatNetworkConfig,\n    getDefaultHttpNetworkConfig,\n    getNetwork\n} from \"./utils\";\nimport { DockerWrapper, VenvWrapper } from \"./starknet-wrappers\";\nimport {\n    amarnaAction,\n    starknetDeprecatedCompileAction,\n    starknetVoyagerAction,\n    starknetTestAction,\n    starknetRunAction,\n    starknetPluginVersionAction,\n    starknetCompileCairo1Action,\n    starknetBuildAction\n} from \"./task-actions\";\nimport {\n    bigIntToShortStringUtil,\n    getContractFactoryUtil,\n    getTransactionUtil,\n    getTransactionReceiptUtil,\n    shortStringToBigIntUtil,\n    getBlockUtil,\n    getNonceUtil,\n    getTransactionTraceUtil,\n    getBalanceUtil\n} from \"./extend-utils\";\nimport { DevnetUtils } from \"./devnet-utils\";\nimport { ExternalServer } from \"./external-server\";\nimport { ArgentAccount, OpenZeppelinAccount } from \"./account\";\nimport { AmarnaDocker } from \"./external-server/docker-amarna\";\nimport { StarknetLegacyWrapper } from \"./starknet-js-wrapper\";\n\nexitHook(() => {\n    ExternalServer.cleanAll();\n});\n\n// copy all user-defined cairo settings; other extendConfig calls will overwrite if needed\nextendConfig((config: HardhatConfig, userConfig: Readonly<HardhatUserConfig>) => {\n    if (userConfig.starknet) {\n        config.starknet = JSON.parse(JSON.stringify(userConfig.starknet));\n    }\n    if (!config.starknet) {\n        config.starknet = {};\n    }\n    if (!config.starknet.requestTimeout) {\n        config.starknet.requestTimeout = 30_000;\n    }\n});\n\n// add sources path\nextendConfig((config: HardhatConfig, userConfig: Readonly<HardhatUserConfig>) => {\n    let newPath: string;\n    if (userConfig.paths && userConfig.paths.starknetSources) {\n        const userPath = userConfig.paths.starknetSources;\n        newPath = adaptPath(config.paths.root, userPath);\n        config.paths.starknetSources = userConfig.paths.starknetSources;\n    } else {\n        const defaultPath = path.join(config.paths.root, DEFAULT_STARKNET_SOURCES_PATH);\n        newPath = defaultPath;\n    }\n\n    config.paths.starknetSources = newPath;\n});\n\n// add artifacts path\nextendConfig((config: HardhatConfig, userConfig: Readonly<HardhatUserConfig>) => {\n    let newPath: string;\n    if (userConfig.paths && userConfig.paths.starknetArtifacts) {\n        const userPath = userConfig.paths.starknetArtifacts;\n        newPath = adaptPath(config.paths.root, userPath);\n        config.paths.starknetArtifacts = userConfig.paths.starknetArtifacts;\n    } else {\n        const defaultPath = path.join(config.paths.root, DEFAULT_STARKNET_ARTIFACTS_PATH);\n        newPath = defaultPath;\n    }\n\n    config.paths.starknetArtifacts = newPath;\n});\n\n// add url to alpha network\nextendConfig((config: HardhatConfig) => {\n    if (!config.networks.alphaGoerli) {\n        config.networks.alphaGoerli = getDefaultHttpNetworkConfig(\n            ALPHA_URL,\n            VOYAGER_GOERLI_CONTRACT_API_URL,\n            VOYAGER_GOERLI_VERIFIED_URL,\n            StarknetChainId.TESTNET\n        );\n    }\n\n    if (!config.networks.alphaGoerli2) {\n        config.networks.alphaGoerli2 = getDefaultHttpNetworkConfig(\n            ALPHA_GOERLI_URL_2,\n            VOYAGER_GOERLI_2_CONTRACT_API_URL,\n            VOYAGER_GOERLI_2_VERIFIED_URL,\n            StarknetChainId.TESTNET2\n        );\n    }\n\n    if (!config.networks.alphaMainnet) {\n        config.networks.alphaMainnet = getDefaultHttpNetworkConfig(\n            ALPHA_MAINNET_URL,\n            VOYAGER_MAINNET_CONTRACT_API_URL,\n            VOYAGER_MAINNET_VERIFIED_URL,\n            StarknetChainId.MAINNET\n        );\n    }\n\n    if (!config.networks.integratedDevnet) {\n        config.networks.integratedDevnet = getDefaultHardhatNetworkConfig(INTEGRATED_DEVNET_URL);\n    }\n});\n\n// set network as specified in userConfig\nextendConfig((config: HardhatConfig, userConfig: Readonly<HardhatUserConfig>) => {\n    config.starknet.network = userConfig.starknet?.network || DEFAULT_STARKNET_NETWORK;\n\n    const networkConfig = getNetwork(\n        config.starknet.network,\n        config.networks,\n        \"starknet.network in hardhat.config\"\n    );\n    config.starknet.networkConfig = networkConfig;\n});\n\nfunction setVenvWrapper(hre: HardhatRuntimeEnvironment, venvPath: string) {\n    if (hre.config.starknet.dockerizedVersion) {\n        const msg =\n            \"Error in config file. Only one of (starknet.dockerizedVersion, starknet.venv) can be specified.\";\n        throw new StarknetPluginError(msg);\n    }\n    hre.starknetWrapper = new VenvWrapper(venvPath, hre);\n}\n\n// add venv wrapper or docker wrapper of starknet\nextendEnvironment((hre) => {\n    hre.starknetJs = new StarknetLegacyWrapper(hre.config.starknet.networkConfig);\n\n    const venvPath = hre.config.starknet.venv;\n    if (venvPath) {\n        setVenvWrapper(hre, venvPath);\n    } else {\n        const repository = CAIRO_CLI_DOCKER_REPOSITORY;\n        const tag = getCairoCliImageTagByArch(hre.config.starknet.dockerizedVersion);\n\n        const image = { repository, tag };\n        const cairoPaths = [];\n        for (const cairoPath of hre.config.paths.cairoPaths || []) {\n            cairoPaths.push(adaptPath(hre.config.paths.root, cairoPath));\n        }\n\n        hre.starknetWrapper = new DockerWrapper(image, hre.config.paths.root, cairoPaths, hre);\n\n        const amarnaImage = { repository: AMARNA_DOCKER_REPOSITORY, tag: AMARNA_DOCKER_IMAGE_TAG };\n        hre.amarnaDocker = new AmarnaDocker(\n            amarnaImage,\n            hre.config.paths.root,\n            hre.config.paths.cairoPaths || [],\n            hre\n        );\n    }\n});\n\ntask(\"starknet-compile-deprecated\", \"Compiles Starknet (Cairo 0) contracts\")\n    .addOptionalVariadicPositionalParam(\n        \"paths\",\n        \"The paths to be used for compilation.\\n\" +\n            \"Each of the provided paths is recursively looked into while searching for source files.\\n\" +\n            \"If no paths are provided, the default contracts directory is traversed.\"\n    )\n    .addOptionalParam(\n        \"cairoPath\",\n        \"Allows specifying the locations of imported files, if necessary.\\n\" +\n            \"Separate them with a colon (:), e.g. --cairo-path='path/to/lib1:path/to/lib2'\"\n    )\n    .addFlag(\"accountContract\", \"Allows compiling an account contract.\")\n    .addFlag(\"disableHintValidation\", \"Allows compiling a contract with any python code in hints.\")\n    .setAction(starknetDeprecatedCompileAction);\n\ntask(\"starknet-compile\", \"Compiles Starknet (Cairo 1) contracts\")\n    .addOptionalVariadicPositionalParam(\n        \"paths\",\n        \"The paths are source files of contracts to be compiled.\\n\" +\n            \"Each of the provided paths is recursively looked into while searching for source files.\\n\" +\n            \"If no paths are provided, the default contracts directory is traversed.\\n\" +\n            \"To build more complex Cairo 1 projects, read about `hardhat starknet-build`\"\n    )\n    .addOptionalParam(\n        \"cairo1BinDir\",\n        \"Allows specifying your local cairo compiler target directory; also configurable via `cairo1BinDir` in hardhat.config.ts file.\\n\" +\n            \"e.g. --cairo1-bin-dir 'path/to/cairo/target/release'\"\n    )\n    .addFlag(\"replaceIds\", \"Replaces sierra ids with human-readable ones.\")\n    .addOptionalParam(\n        \"allowedLibfuncsListName\",\n        \"The allowed libfuncs list to use (default: most recent audited list).\"\n    )\n    .addOptionalParam(\"allowedLibfuncsListFile\", \"A file of the allowed libfuncs list to use.\")\n    .addFlag(\"addPythonicHints\", \"Add pythonic hints.\")\n    .addFlag(\"singleFile\", \"Compile single file.\")\n    .setAction(starknetCompileCairo1Action);\n\ntask(\"starknet-build\", \"Builds Scarb projects\")\n    .addOptionalVariadicPositionalParam(\n        \"paths\",\n        \"The paths are source files of contracts to be compiled.\\n\" +\n            \"Each of the provided paths is recursively looked into while searching for Scarb projects.\\n\" +\n            \"If no paths are provided, the default contracts directory is traversed.\\n\" +\n            `Each project must be a valid Scarb ${SUPPORTED_SCARB_VERSION} project with lib.cairo and Scarb.toml in its root.\\n` +\n            \"The toml file must have `sierra` and `casm` set to `true` under [[target.starknet-contract]].\\n\" +\n            \"In code, load the generated contracts with an underscore-separated string:\\n\" +\n            \"\\tstarknet.getContractFactory('<PACKAGE_NAME>_<CONTRACT_NAME>')\\n\" +\n            \"E.g. if your toml specifies `name = MyPackage` and there is a contract called FooContract in your source files, you would load it with:\\n\" +\n            \"\\tstarknet.getContractFactory('MyPackage_FooContract')\\n\" +\n            \"The name of the file where the contract was defined doesn't play a role.\\n\" +\n            \"The plugin doesn't have a default Scarb command yet (a dockerized wrapper will be supported soon).\\n\" +\n            \"You need to provide a `scarbCommand` (either an exact command or the path to it) under `starknet` in your hardhat config file, \" +\n            \"or you can override that via `--scarb-command <COMMAND>`.\"\n    )\n    .addOptionalParam(\n        \"scarbCommand\",\n        \"Your local Scarb command or path to the executable file. Overrides the one set in the hardhat config file\"\n    )\n    .addFlag(\n        \"skipValidate\",\n        \"By default, your TOML config file will be validated to ensure it generates the artifacts required for later contract loading.\\n\" +\n            \"Set this flag to skip the validation.\"\n    )\n    .setAction(starknetBuildAction);\n\nextendEnvironment((hre) => {\n    hre.starknet = {\n        getContractFactory: async (contractPath) => {\n            const contractFactory = await getContractFactoryUtil(hre, contractPath);\n            return contractFactory;\n        },\n\n        shortStringToBigInt: (convertibleString) => {\n            const convertedString = shortStringToBigIntUtil(convertibleString);\n            return convertedString;\n        },\n\n        bigIntToShortString: (convertibleBigInt) => {\n            const convertedBigInt = bigIntToShortStringUtil(convertibleBigInt);\n            return convertedBigInt;\n        },\n\n        devnet: lazyObject(() => new DevnetUtils(hre)),\n\n        getTransaction: async (txHash) => {\n            const transaction = await getTransactionUtil(txHash, hre);\n            return transaction;\n        },\n\n        getTransactionReceipt: async (txHash) => {\n            const txReceipt = await getTransactionReceiptUtil(txHash, hre);\n            return txReceipt;\n        },\n\n        getTransactionTrace: async (txHash) => {\n            const txTrace = await getTransactionTraceUtil(txHash, hre);\n            return txTrace;\n        },\n\n        getBlock: async (identifier) => {\n            const block = await getBlockUtil(hre, identifier);\n            return block;\n        },\n\n        getNonce: async (address, options) => {\n            const nonce = await getNonceUtil(hre, address, options);\n            return nonce;\n        },\n\n        getBalance: async (address) => {\n            const balance = await getBalanceUtil(address, hre);\n            return balance;\n        },\n\n        network: hre.config.starknet.network,\n        networkConfig: hre.config.starknet.networkConfig as HardhatNetworkConfig,\n\n        OpenZeppelinAccount: OpenZeppelinAccount,\n        ArgentAccount: ArgentAccount\n    };\n});\n\ntask(\"starknet-verify\", \"Verifies a contract on a Starknet network.\")\n    .addOptionalParam(\"starknetNetwork\", \"The network version to be used (e.g. alpha)\")\n    .addParam(\"path\", \"The path of the main cairo contract (e.g. contracts/contract.cairo)\")\n    .addParam(\"address\", \"The address where the contract is deployed\")\n    .addParam(\"compilerVersion\", \"The compiler version used to compile the cairo contract\")\n    .addFlag(\"accountContract\", \"The contract type which specifies it's an account contract.\")\n    .addOptionalParam(\"license\", \"The license of the contract (e.g No License (None))\")\n    .addOptionalVariadicPositionalParam(\n        \"paths\",\n        \"The paths of the dependencies of the contract specified in --path\\n\" +\n            \"All dependencies should be in the same folder as the contract.\" +\n            \"e.g. path/to/dependency1 path/to/dependency2\"\n    )\n    .setAction(starknetVoyagerAction);\n\nfunction addStarknetNetworkParam(task: ConfigurableTaskDefinition): ConfigurableTaskDefinition {\n    return task.addOptionalParam(\n        \"starknetNetwork\",\n        \"Specify the starknet-network to be used; overrides the value from hardhat.config\"\n    );\n}\n\naddStarknetNetworkParam(task(\"test\")).setAction(starknetTestAction);\n\naddStarknetNetworkParam(task(\"run\")).setAction(starknetRunAction);\n\ntask(\"starknet-plugin-version\", \"Prints the version of the starknet plugin.\").setAction(\n    starknetPluginVersionAction\n);\n\ntask(\"amarna\", \"Runs Amarna, the static-analyzer and linter for Cairo.\")\n    .addFlag(\"script\", \"Run ./amarna.sh file to use Amarna with custom args.\")\n    .setAction(amarnaAction);\n\nexport * from \"./types\";\nexport * from \"./starknet-types\";\nexport * from \"./starknet-plugin-error\";\n"
  },
  {
    "path": "src/recompiler.ts",
    "content": "import fs from \"fs\";\nimport path from \"path\";\nimport { createHash } from \"crypto\";\nimport { HardhatRuntimeEnvironment, ProjectPathsConfig, TaskArguments } from \"hardhat/types\";\nimport { starknetDeprecatedCompileAction } from \"./task-actions\";\nimport { getArtifactPath, traverseFiles } from \"./utils\";\nimport { ABI_SUFFIX } from \"./constants\";\n\ninterface ContractData {\n    contentHash: string;\n    outputPath: string;\n    abiPath: string;\n    cairoPath?: string;\n    accountContract?: boolean;\n    disableHintValidation?: boolean;\n}\n\n// Cache file name\nconst CACHE_FILE_NAME = \"cairo-files-cache.json\";\n\nexport class Cache {\n    protected cache: Record<string, ContractData> = {};\n    public fsPromises = fs.promises;\n\n    constructor(protected hre: HardhatRuntimeEnvironment) {}\n\n    // Returns the contract data from the cache\n    public async getCache(): Promise<Record<string, ContractData>> {\n        await this.loadCache();\n        return this.cache;\n    }\n\n    // Sets the cache\n    public setCache(cacheData: Record<string, ContractData>): void {\n        this.cache = cacheData;\n    }\n\n    // Returns the cache file path\n    private getCacheFilePath(): string {\n        return path.join(this.hre.config.paths.cache, CACHE_FILE_NAME);\n    }\n\n    // Returns the cache directory path\n    private getCacheDirPath(): string {\n        return path.join(this.hre.config.paths.cache);\n    }\n\n    // Loads the cache from the file\n    public async loadCache(): Promise<void> {\n        const cacheDirPath = this.getCacheDirPath();\n        // Creates cache directory if it doesn't exist\n        if (!fs.existsSync(cacheDirPath)) {\n            fs.mkdirSync(cacheDirPath, { recursive: true });\n        }\n\n        const cacheFilePath = this.getCacheFilePath();\n        if (fs.existsSync(cacheFilePath)) {\n            const cacheBuffer = await this.fsPromises.readFile(cacheFilePath);\n            this.setCache(JSON.parse(cacheBuffer.toString() || \"{}\"));\n        } else {\n            await fs.promises.writeFile(cacheFilePath, JSON.stringify({}) + \"\\n\");\n            this.setCache({});\n        }\n    }\n\n    // Saves the cache to the file\n    public async saveCache(): Promise<void> {\n        const cacheFilePath = this.getCacheFilePath();\n        await this.fsPromises.writeFile(\n            cacheFilePath,\n            JSON.stringify(this.cache, null, \" \") + \"\\n\"\n        );\n    }\n}\n\nexport class Recompiler {\n    private cache: Cache;\n    private hre: HardhatRuntimeEnvironment;\n\n    constructor(hre: HardhatRuntimeEnvironment) {\n        this.cache = new Cache(hre);\n        this.hre = hre;\n    }\n\n    // Gets hash of each .cairo file inside source\n    private async getContractHash(\n        paths: ProjectPathsConfig\n    ): Promise<Record<string, ContractData>> {\n        const { starknetSources: defaultSourcesPath } = paths;\n\n        const sourceRegex = new RegExp(\"^\" + defaultSourcesPath + \"/\");\n        const artifactsDir = getArtifactPath(defaultSourcesPath, paths);\n\n        const newCacheEntry: Record<string, ContractData> = {};\n        // Get sources from source path. Check only cairo file extensions\n        const filesList = await traverseFiles(defaultSourcesPath, \"*.cairo\");\n        // Select file name\n        for (const cairoContract of filesList) {\n            const data = await this.cache.fsPromises.readFile(cairoContract);\n            const hash = createHash(\"sha256\");\n            hash.update(data);\n            const suffix = cairoContract.replace(sourceRegex, \"\");\n\n            const fileName = path.basename(suffix, \".cairo\");\n            const abiPath = path.join(artifactsDir, suffix, `${fileName}${ABI_SUFFIX}`);\n            const outputPath = path.join(artifactsDir, suffix, `${fileName}.json`);\n\n            newCacheEntry[cairoContract] = {\n                contentHash: hash.digest(\"hex\").toString(),\n                outputPath,\n                abiPath\n            };\n        }\n\n        return newCacheEntry;\n    }\n\n    // Gets cache entry of a given cairo file plus artifacts\n    private async getCacheEntry(\n        file: string,\n        output: string,\n        abi: string,\n        cairoPath?: string,\n        args?: TaskArguments\n    ): Promise<Record<string, ContractData>> {\n        const data = await this.cache.fsPromises.readFile(file);\n        const hash = createHash(\"sha256\");\n        hash.update(data);\n\n        const newCacheEntry: Record<string, ContractData> = {};\n        newCacheEntry[file] = {\n            contentHash: hash.digest(\"hex\").toString(),\n            outputPath: output,\n            abiPath: abi\n        };\n\n        if (args?.disableHintValidation) {\n            newCacheEntry[file].disableHintValidation = true;\n        }\n\n        if (args?.accountContract) {\n            newCacheEntry[file].accountContract = true;\n        }\n\n        if (cairoPath) {\n            newCacheEntry[file].cairoPath = args.cairoPath;\n        }\n\n        return newCacheEntry;\n    }\n\n    // Updates cache entry with new contracts\n    private getUpdatedCache(\n        oldCache: Record<string, ContractData>,\n        newCacheEntry: Record<string, ContractData>\n    ): Record<string, ContractData> {\n        const updatedCacheEntry: Record<string, ContractData> = oldCache;\n        for (const contractName in newCacheEntry) {\n            if (oldCache[contractName]?.contentHash !== newCacheEntry[contractName].contentHash) {\n                updatedCacheEntry[contractName] = newCacheEntry[contractName];\n            }\n        }\n\n        return updatedCacheEntry;\n    }\n\n    // Checks artifacts availability\n    private async checkArtifacts(\n        paths: ProjectPathsConfig,\n        newCacheEntry: Record<string, ContractData>\n    ): Promise<Set<string>> {\n        // Set to save contracts with changed content & unavailable artifacts\n        const changed: Set<string> = new Set();\n        const { starknetSources: defaultSourcesPath } = paths;\n        const artifactsDir = getArtifactPath(defaultSourcesPath, paths);\n        // Traverse on artifacts directory\n        // Create if it doesn't exist\n        if (!fs.existsSync(artifactsDir)) {\n            fs.mkdirSync(artifactsDir, { recursive: true });\n        }\n\n        const artifactsList = await traverseFiles(artifactsDir, \"*.json\");\n        for (const name in newCacheEntry) {\n            const outputPath = newCacheEntry[name].outputPath;\n            const abiPath = newCacheEntry[name].abiPath;\n            if (!artifactsList.includes(outputPath) || !artifactsList.includes(abiPath)) {\n                changed.add(name);\n            }\n        }\n\n        return changed;\n    }\n\n    // Compile changed contracts\n    private async compileChangedContracts(\n        newCacheEntry: Record<string, ContractData>,\n        changed: Set<string>\n    ): Promise<void> {\n        for (const changedContract of changed) {\n            const entry = newCacheEntry[changedContract];\n            const compileArguments: TaskArguments = {\n                paths: [changedContract],\n                disableHintValidation: entry?.disableHintValidation,\n                accountContract: entry?.accountContract,\n                cairoPath: entry?.cairoPath\n            };\n\n            await starknetDeprecatedCompileAction(compileArguments, this.hre);\n        }\n    }\n\n    // Updated set with changed and new contracts\n    private async updateSet(\n        cache: Record<string, ContractData>,\n        newCacheEntry: Record<string, ContractData>,\n        changed: Set<string>\n    ): Promise<Set<string>> {\n        for (const contractName in newCacheEntry) {\n            // Add new contracts that are not in cache before\n            if (!cache[contractName]) {\n                changed.add(contractName);\n                continue;\n            }\n\n            // Add contracts that contain a change in content\n            if (newCacheEntry[contractName].contentHash !== cache[contractName].contentHash) {\n                changed.add(contractName);\n            }\n        }\n\n        // Remove deleted sources from old cache by overwriting it\n        this.cache.setCache(newCacheEntry);\n        await this.cache.saveCache();\n\n        return changed;\n    }\n\n    // Handles cache on Starknet cli calls\n    public async handleCache(): Promise<void> {\n        // If recompile is not enabled, do nothing\n        if (!this.hre.userConfig?.starknet?.recompile) return;\n\n        const paths = this.hre.config.paths;\n        try {\n            const oldCache = await this.cache.getCache();\n            const newCacheEntry = await this.getContractHash(paths);\n            const changedContracts = await this.checkArtifacts(paths, newCacheEntry);\n            const updatedSet = await this.updateSet(oldCache, newCacheEntry, changedContracts);\n            await this.compileChangedContracts(newCacheEntry, updatedSet);\n        } catch (error) {\n            // If there is an error, do not recompile\n            console.error(error);\n            process.exit(1);\n        }\n    }\n\n    // Updates cache with new contract and artifacts\n    public async updateCache(\n        args: TaskArguments,\n        file: string,\n        output: string,\n        abi: string,\n        cairoPath?: string\n    ): Promise<void> {\n        const oldCache = await this.cache.getCache();\n        const newCacheEntry = await this.getCacheEntry(file, output, abi, cairoPath, args);\n        const updatedCache = this.getUpdatedCache(oldCache, newCacheEntry);\n        this.cache.setCache(updatedCache);\n    }\n\n    // Calls save cache after compilation\n    public async saveCache(): Promise<void> {\n        await this.cache.saveCache();\n    }\n}\n"
  },
  {
    "path": "src/scarb-wrapper.ts",
    "content": "import { ProcessResult } from \"@nomiclabs/hardhat-docker\";\nimport { spawnSync } from \"child_process\";\nimport { HardhatRuntimeEnvironment, TaskArguments } from \"hardhat/types\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport { PLUGIN_NAME } from \"./constants\";\nimport path from \"path\";\nimport os from \"os\";\n\nexport abstract class ScarbWrapper {\n    private static instance: ScarbWrapper;\n\n    static getInstance(cliArgs: TaskArguments, hre: HardhatRuntimeEnvironment): ScarbWrapper {\n        if (this.instance) {\n            return this.instance;\n        } else if (cliArgs.scarbCommand) {\n            this.instance = new CustomScarbWrapper(cliArgs.scarbCommand);\n        } else if (hre.config.starknet.scarbCommand) {\n            this.instance = new CustomScarbWrapper(hre.config.starknet.scarbCommand);\n        } else {\n            this.instance = new DockerizedScarbWrapper(\n                hre.config.starknet.dockerizedVersion,\n                hre.config.paths.root\n            );\n        }\n        return this.instance;\n    }\n\n    public abstract build(packageConfigPath: string, artifactDirPath: string): ProcessResult;\n}\n\nexport class DockerizedScarbWrapper extends ScarbWrapper {\n    private formattedImage: string;\n\n    constructor(imageTag: string, private projectRootPath: string) {\n        super();\n\n        throw new StarknetPluginError(\n            \"Dockerized Scarb is not yet supported. \" +\n                \"If you have Scarb installed on your machine, provide its path via scarbCommand in hardhat config, \" +\n                \"or via --scarb-command of hardhat starknet-build\"\n        );\n        // UNCOMMENT THIS WHEN DOCKERIZED SCARB SUPPORTED\n        // const repository = CAIRO_CLI_DOCKER_REPOSITORY;\n        // const tag = getCairoCliImageTagByArch(imageTag);\n        // this.formattedImage = `${repository}:${tag}`;\n\n        // console.log(`${PLUGIN_NAME} plugin using dockerized Scarb (${this.formattedImage})`);\n    }\n\n    public override build(packageConfigPath: string, artifactDirPath: string): ProcessResult {\n        const packageDir = path.dirname(packageConfigPath);\n\n        // If not specified, inside the container it tries to write cache to /.cache\n        // which is not allowed for a non-root user. So here we are setting it to the path used by Scarb\n        // in many non-docker environments\n        const globalCacheDir = path.join(os.tmpdir(), \".cache\", \"scarb\");\n        const execution = spawnSync(\"docker\", [\n            \"run\",\n            \"--rm\",\n            ...[\"-v\", `${packageDir}:${packageDir}`],\n            ...[\"-v\", `${this.projectRootPath}:${this.projectRootPath}`],\n            ...[\"-v\", `${globalCacheDir}:${globalCacheDir}`],\n\n            // https://unix.stackexchange.com/questions/627027/files-created-by-docker-container-are-owned-by-root\n            ...[\"-u\", `${os.userInfo().uid}:${os.userInfo().gid}`],\n\n            this.formattedImage,\n            \"scarb\",\n            ...[\"--manifest-path\", packageConfigPath],\n            ...[\"--target-dir\", artifactDirPath],\n            ...[\"--global-cache-dir\", globalCacheDir],\n            \"build\"\n        ]);\n\n        return {\n            statusCode: execution.status,\n            stdout: execution.stdout,\n            stderr: execution.stderr\n        };\n    }\n}\n\nexport class CustomScarbWrapper extends ScarbWrapper {\n    constructor(private scarbCommand: string) {\n        super();\n\n        // validate\n        const execution = spawnSync(scarbCommand, [\"--version\"]);\n        // on mac, properties of spawnSync result can be null if invalid command\n        if (execution.status !== 0) {\n            throw new StarknetPluginError(\n                `Not a legal executable Scarb command: ${scarbCommand}.\\n${execution.stderr?.toString()}`\n            );\n        }\n\n        // log\n        const versionString = execution.stdout.toString().trim().split(\"\\n\").join(\", \");\n        console.log(`${PLUGIN_NAME} plugin using custom Scarb (${versionString})`);\n    }\n\n    public override build(packageConfigPath: string, artifactDirPath: string): ProcessResult {\n        const execution = spawnSync(this.scarbCommand, [\n            ...[\"--manifest-path\", packageConfigPath],\n            ...[\"--target-dir\", artifactDirPath],\n            \"build\"\n        ]);\n        return {\n            statusCode: execution.status,\n            stderr: execution.stderr,\n            stdout: execution.stdout\n        };\n    }\n}\n"
  },
  {
    "path": "src/starknet-docker-proxy.ts",
    "content": "import { Image } from \"@nomiclabs/hardhat-docker\";\nimport path from \"path\";\nimport { DockerServer } from \"./external-server/docker-server\";\nimport { getFreePort } from \"./external-server/external-server\";\n\nconst PROXY_SERVER_FILE = \"starknet_cli_wrapper.py\";\nconst PROXY_SERVER_HOST_PATH = path.join(__dirname, PROXY_SERVER_FILE);\nconst PROXY_SERVER_CONTAINER_PATH = `/${PROXY_SERVER_FILE}`;\n\nconst LEGACY_CLI_FILE = \"starknet_cli_legacy.py\";\nconst LEGACY_CLI_HOST_PATH = path.join(__dirname, LEGACY_CLI_FILE);\nconst LEGACY_CLI_CONTAINER_PATH = `/${LEGACY_CLI_FILE}`;\n\nexport class StarknetDockerProxy extends DockerServer {\n    /**\n     * @param image the Docker image to be used for running the container\n     * @param rootPath the hardhat project root\n     * @param cairoPaths the paths specified in hardhat config cairoPaths\n     */\n    constructor(image: Image, private rootPath: string, private cairoPaths: string[]) {\n        super(image, \"127.0.0.1\", null, \"\", \"starknet-docker-proxy\");\n    }\n\n    protected async getDockerArgs(): Promise<string[]> {\n        // To access the files on host machine from inside the container, proper mounting has to be done.\n        const volumes = [\"-v\", `${PROXY_SERVER_HOST_PATH}:${PROXY_SERVER_CONTAINER_PATH}`];\n        volumes.push(\"-v\", `${LEGACY_CLI_HOST_PATH}:${LEGACY_CLI_CONTAINER_PATH}`);\n\n        for (const mirroredPath of [this.rootPath, ...this.cairoPaths]) {\n            volumes.push(\"-v\", `${mirroredPath}:${mirroredPath}`);\n        }\n\n        const dockerArgs = [...volumes];\n\n        // Check if Docker Desktop\n        if (this.isDockerDesktop) {\n            this.port = await this.getPort();\n            dockerArgs.push(\"-p\", `${this.port}:${this.port}`);\n        } else {\n            dockerArgs.push(\"--network\", \"host\");\n        }\n\n        return dockerArgs;\n    }\n\n    protected async getContainerArgs(): Promise<string[]> {\n        this.port = await this.getPort();\n        return [\"python3\", PROXY_SERVER_CONTAINER_PATH, this.port];\n    }\n\n    protected async getPort(): Promise<string> {\n        if (!this.port) {\n            this.port = await getFreePort();\n        }\n        return this.port;\n    }\n}\n"
  },
  {
    "path": "src/starknet-js-wrapper.ts",
    "content": "import { ProcessResult } from \"@nomiclabs/hardhat-docker\";\nimport { promises as fsp } from \"fs\";\nimport { NetworkConfig } from \"hardhat/types/config\";\nimport {\n    BigNumberish,\n    BlockIdentifier,\n    json,\n    provider as providerUtil,\n    SequencerProvider\n} from \"starknet\";\n\nexport class StarknetJsWrapper {\n    public provider: SequencerProvider;\n\n    constructor(networkConfig: NetworkConfig) {\n        this.setProvider(networkConfig);\n    }\n\n    public setProvider(networkConfig: NetworkConfig) {\n        this.provider = new SequencerProvider({\n            baseUrl: networkConfig.url\n        });\n    }\n}\n\n/**\n * StarknetLegacyWrapper is meant to facilitate the discontinuation of the Starknet CLI usage within StarknetWrapper\n */\nexport class StarknetLegacyWrapper extends StarknetJsWrapper {\n    private async readContract(contractPath: string) {\n        return json.parse((await fsp.readFile(contractPath)).toString(\"ascii\"));\n    }\n\n    private stringifyResponse(r: unknown) {\n        return typeof r !== \"string\"\n            ? `${json.stringify(r, undefined, \"\\n\").replace(/\\n+/g, \"\\n\")}\\n`\n            : r;\n    }\n\n    private generateProcessResult(\n        statusCode: number,\n        stdout: string,\n        stderr: string\n    ): ProcessResult {\n        return {\n            statusCode,\n            stdout,\n            stderr\n        } as unknown as ProcessResult;\n    }\n\n    private async wrapProcessResult(p: Promise<unknown>): Promise<ProcessResult> {\n        return p\n            .then((a) => this.generateProcessResult(0, this.stringifyResponse(a), \"\"))\n            .catch((e) => this.generateProcessResult(1, \"\", this.stringifyResponse(e)));\n    }\n\n    public async declare(\n        contractPath: string,\n        senderAddress: string,\n        signature: string[],\n        nonce: string,\n        maxFee: string\n    ): Promise<ProcessResult> {\n        const contractJson = await this.readContract(contractPath);\n        const contract = providerUtil.parseContract(contractJson);\n\n        return this.wrapProcessResult(\n            this.provider\n                .declareContract(\n                    {\n                        contract,\n                        senderAddress,\n                        signature\n                    },\n                    {\n                        nonce,\n                        maxFee\n                    }\n                )\n                .then(\n                    ({ class_hash, transaction_hash }) =>\n                        \"DeprecatedDeclare transaction was sent.\\n\" +\n                        `Contract class hash: ${class_hash}\\n` +\n                        `Transaction hash: ${transaction_hash}\\n`\n                )\n        );\n    }\n\n    public async getTxStatus(txHash: BigNumberish): Promise<ProcessResult> {\n        return this.wrapProcessResult(this.provider.getTransactionStatus(txHash));\n    }\n\n    public async getTransactionTrace(txHash: BigNumberish): Promise<ProcessResult> {\n        return this.wrapProcessResult(this.provider.getTransactionTrace(txHash));\n    }\n\n    public async getTransactionReceipt(txHash: BigNumberish): Promise<ProcessResult> {\n        return this.wrapProcessResult(this.provider.getTransactionReceipt(txHash));\n    }\n\n    public async getTransaction(txHash: BigNumberish): Promise<ProcessResult> {\n        return this.wrapProcessResult(this.provider.getTransaction(txHash));\n    }\n\n    public async getBlock(blockIdentifier?: BlockIdentifier): Promise<ProcessResult> {\n        return this.wrapProcessResult(this.provider.getBlock(blockIdentifier));\n    }\n\n    public async getNonce(\n        address: string,\n        blockIdentifier?: BlockIdentifier\n    ): Promise<ProcessResult> {\n        return this.wrapProcessResult(\n            this.provider.getNonceForAddress(address, blockIdentifier).then(BigInt)\n        );\n    }\n}\n"
  },
  {
    "path": "src/starknet-plugin-error.ts",
    "content": "import { HardhatPluginError } from \"hardhat/plugins\";\nimport { PLUGIN_NAME } from \"./constants\";\n\nexport class StarknetPluginError extends HardhatPluginError {\n    constructor(message: string, parentError?: Error) {\n        super(PLUGIN_NAME, message, parentError);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\n"
  },
  {
    "path": "src/starknet-types.ts",
    "content": "/**\n * Contains typing of Starknet specific objects: ABI related and network response related.\n */\n\nexport interface Member {\n    name: string;\n    offset: number;\n    type: string;\n}\n\nexport interface Struct {\n    members: Member[];\n    name: string;\n    size: number;\n    type: string;\n}\n\nexport interface Argument {\n    name?: string;\n    type: string;\n}\n\nexport interface CairoFunction {\n    stateMutability?: string;\n    name: string;\n    type: \"function\" | \"constructor\";\n    inputs: Argument[];\n    outputs: Argument[];\n}\n\nexport interface EventSpecification {\n    data?: Argument[]; // cairo 0\n    inputs?: Argument[]; // cairo 1\n    keys: string[];\n    name: string;\n    type: \"event\";\n}\n\nexport interface Interface {\n    type: \"interface\";\n    name: string;\n    items: AbiEntry[];\n}\n\nexport interface EventAbi {\n    [encodedName: string]: EventSpecification;\n}\n\nexport type AbiEntry = CairoFunction | Struct | EventSpecification | Interface;\n\nexport interface Abi {\n    [name: string]: AbiEntry;\n}\n\nexport interface Event {\n    data: string[];\n    from_address: string;\n    keys: string[];\n}\n\nexport interface BuiltinInstanceCounter {\n    bitwise_builtin: number;\n    ec_op_builtin: number;\n    ecdsa_builtin: number;\n    output_builtin: number;\n    pedersen_builtin: number;\n    range_check_builtin: number;\n}\n\nexport interface ExecutionResources {\n    builtin_instance_counter: BuiltinInstanceCounter;\n    n_memory_holes: number;\n    n_steps: number;\n}\n\nexport interface TransactionReceipt {\n    block_hash: string;\n    block_number: number;\n    events: Event[];\n    execution_resources: ExecutionResources;\n    l2_to_l1_messages: L2ToL1Message[];\n    status: string;\n    transaction_hash: string;\n    transaction_index: number;\n}\n\nexport interface L2ToL1Message {\n    from_address: string;\n    payload: string[];\n    to_address: string;\n}\n\nexport interface TransactionData {\n    calldata: string[];\n    sender_address: string;\n    entry_point_selector: string;\n    entry_point_type: string;\n    max_fee: string;\n    signature: string[];\n    transaction_hash: string;\n    type: string;\n}\n\nexport interface Transaction {\n    block_hash: string;\n    block_number: number;\n    status: string;\n    transaction: TransactionData;\n    transaction_index: number;\n}\n\nexport interface OrderedMessage {\n    order: number;\n    to_address: string;\n    payload: number[];\n}\n\nexport interface FunctionInvocation {\n    call_type: string;\n    calldata: string[];\n    caller_address: string;\n    class_hash: string;\n    contract_address: string;\n    entry_point_type: string;\n    events: Event[];\n    execution_resources: ExecutionResources;\n    internal_calls: FunctionInvocation[];\n    messages: OrderedMessage[];\n    result: string[];\n    selector: string;\n}\n\nexport interface TransactionTrace {\n    function_invocation?: FunctionInvocation;\n    signature: string[];\n    validate_invocation?: FunctionInvocation;\n    fee_transfer_invocation?: FunctionInvocation;\n}\n\nexport interface MintResponse {\n    new_balance: number;\n    unit: string;\n    tx_hash: string;\n}\n\nexport type TxFailureReason = {\n    code: string;\n    error_message: string;\n    tx_id: string;\n};\n\nexport type FeeEstimation = {\n    amount: bigint;\n    unit: string;\n    gas_price: bigint;\n    gas_usage: bigint;\n};\n\nexport type StarkError = {\n    code: string;\n    message: string;\n};\n"
  },
  {
    "path": "src/starknet-venv-proxy.ts",
    "content": "import { ChildProcess, spawn } from \"child_process\";\nimport { ExternalServer } from \"./external-server\";\n\nimport path from \"path\";\n\nexport class StarknetVenvProxy extends ExternalServer {\n    constructor(private pythonPath: string) {\n        super(\"127.0.0.1\", null, \"\", \"starknet-venv-proxy\");\n    }\n\n    protected async spawnChildProcess(): Promise<ChildProcess> {\n        const proxyServerPath = path.join(__dirname, \"starknet_cli_wrapper.py\");\n        return spawn(this.pythonPath, [proxyServerPath, this.port]);\n    }\n\n    protected cleanup(): void {\n        this.childProcess?.kill();\n    }\n}\n"
  },
  {
    "path": "src/starknet-wrappers.ts",
    "content": "import { Image, ProcessResult } from \"@nomiclabs/hardhat-docker\";\nimport axios from \"axios\";\nimport { HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport path from \"path\";\nimport { num, selector } from \"starknet\";\n\nimport { exec } from \"./cairo1-compiler\";\nimport {\n    CAIRO1_COMPILE_BIN,\n    CAIRO1_SIERRA_COMPILE_BIN,\n    DOCKER_HOST,\n    PLUGIN_NAME\n} from \"./constants\";\nimport { ExternalServer } from \"./external-server\";\nimport { StarknetDockerProxy } from \"./starknet-docker-proxy\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport { FeeEstimation } from \"./starknet-types\";\nimport { StarknetVenvProxy } from \"./starknet-venv-proxy\";\nimport { BlockNumber } from \"./types\";\nimport { getPrefixedCommand, normalizeVenvPath } from \"./utils/venv\";\n\ninterface CompileWrapperOptions {\n    file: string;\n    output: string;\n    abi: string;\n    cairoPath: string;\n    accountContract: boolean;\n    disableHintValidation: boolean;\n}\n\ninterface CairoToSierraOptions {\n    path: string;\n    output: string;\n    binDirPath?: string;\n    replaceIds?: boolean;\n    allowedLibfuncsListName?: string;\n    allowedLibfuncsListFile?: string;\n    singleFile?: boolean;\n}\n\ninterface SierraToCasmOptions {\n    file: string;\n    output: string;\n    binDirPath?: string;\n    allowedLibfuncsListName?: string;\n    allowedLibfuncsListFile?: string;\n    addPythonicHints?: boolean;\n}\n\ninterface DeclareWrapperOptions {\n    contract: string;\n    maxFee: string;\n    signature?: string[];\n    token?: string;\n    sender?: string;\n    nonce?: string;\n}\n\ninterface TxHashQueryWrapperOptions {\n    hash: string;\n}\n\ninterface BlockQueryWrapperOptions {\n    number?: BlockNumber;\n    hash?: string;\n}\n\ninterface NonceQueryWrapperOptions {\n    address: string;\n    blockHash?: string;\n    blockNumber?: BlockNumber;\n}\n\nexport abstract class StarknetWrapper {\n    constructor(\n        protected externalServer: ExternalServer,\n        protected hre: HardhatRuntimeEnvironment\n    ) {\n        // this is dangerous since hre get set here, before being fully initialized (e.g. active network not yet set)\n        // it's dangerous because in getters (e.g. get gatewayUrl) we rely on it being initialized\n    }\n\n    protected get gatewayUrl(): string {\n        const url = this.hre.starknet.networkConfig.url;\n        if (this.externalServer.isDockerDesktop) {\n            for (const protocol of [\"http://\", \"https://\", \"\"]) {\n                for (const host of [\"localhost\", \"127.0.0.1\"]) {\n                    if (url === `${protocol}${host}`) {\n                        return `${protocol}${DOCKER_HOST}`;\n                    }\n\n                    const prefix = `${protocol}${host}:`;\n                    if (url.startsWith(prefix)) {\n                        return url.replace(prefix, `${protocol}${DOCKER_HOST}:`);\n                    }\n                }\n            }\n        }\n        return url;\n    }\n\n    public async execute(\n        command:\n            | \"starknet-compile-deprecated\"\n            | \"get_class_hash\"\n            | \"get_contract_class\"\n            | \"get_contract_class_hash\"\n            | \"get_compiled_class_hash\",\n        args: string[]\n    ): Promise<ProcessResult> {\n        return await this.externalServer.post<ProcessResult>({\n            command,\n            args\n        });\n    }\n\n    protected prepareDeprecatedCompileOptions(options: CompileWrapperOptions): string[] {\n        const ret = [\n            options.file,\n            \"--abi\",\n            options.abi,\n            \"--output\",\n            options.output,\n            \"--cairo_path\",\n            options.cairoPath\n        ];\n\n        if (options.accountContract) {\n            ret.push(\"--account_contract\");\n        }\n\n        if (options.disableHintValidation) {\n            ret.push(\"--disable_hint_validation\");\n        }\n\n        return ret;\n    }\n\n    public async deprecatedCompile(options: CompileWrapperOptions): Promise<ProcessResult> {\n        const preparedOptions = this.prepareDeprecatedCompileOptions(options);\n        const executed = await this.execute(\"starknet-compile-deprecated\", preparedOptions);\n        return executed;\n    }\n\n    public async compileCairoToSierra(options: CairoToSierraOptions): Promise<ProcessResult> {\n        const args = this.prepareCairoToSierraOptions(options);\n        const command = this.getCairo1Command(options.binDirPath, CAIRO1_COMPILE_BIN, args);\n\n        const executed = exec(command.join(\" \"));\n        return executed;\n    }\n\n    public async compileSierraToCasm(options: SierraToCasmOptions): Promise<ProcessResult> {\n        const args = this.prepareSierraToCasmOptions(options);\n        const command = this.getCairo1Command(options.binDirPath, CAIRO1_SIERRA_COMPILE_BIN, args);\n\n        const executed = exec(command.join(\" \"));\n        return executed;\n    }\n\n    protected prepareCairoToSierraOptions(options: CairoToSierraOptions): string[] {\n        const args = [];\n\n        if (options?.replaceIds === true) {\n            args.push(\"-r\");\n        }\n\n        if (options.allowedLibfuncsListName) {\n            args.push(\"--allowed-libfuncs-list-name\", options.allowedLibfuncsListName);\n        }\n\n        if (options.allowedLibfuncsListFile) {\n            args.push(\"--allowed-libfuncs-list-file\", options.allowedLibfuncsListFile);\n        }\n\n        if (options?.singleFile === true) {\n            args.push(\"--single-file\");\n        }\n\n        args.push(options.path);\n\n        if (options.output) {\n            args.push(options.output);\n        }\n\n        return args;\n    }\n\n    protected prepareSierraToCasmOptions(options: SierraToCasmOptions): string[] {\n        const args = [];\n        if (options.allowedLibfuncsListName) {\n            args.push(\"--allowed-libfuncs-list-name\", options.allowedLibfuncsListName);\n        }\n\n        if (options.allowedLibfuncsListFile) {\n            args.push(\"--allowed-libfuncs-list-file\", options.allowedLibfuncsListFile);\n        }\n\n        if (options?.addPythonicHints === true) {\n            args.push(\"--add-pythonic-hints\");\n        }\n\n        args.push(options.file);\n\n        if (options.output) {\n            args.push(options.output);\n        }\n\n        return args;\n    }\n\n    protected getCairo1Command(binDirPath: string, binCommand: string, args: string[]): string[] {\n        const cairo1Bin = path.join(binDirPath, binCommand);\n        return [cairo1Bin, ...args];\n    }\n\n    public async declare(options: DeclareWrapperOptions): Promise<ProcessResult> {\n        return this.hre.starknetJs.declare(\n            options.contract,\n            options.sender,\n            options.signature,\n            options.nonce,\n            options.maxFee\n        );\n    }\n\n    public async getTxStatus(options: TxHashQueryWrapperOptions): Promise<ProcessResult> {\n        return this.hre.starknetJs.getTxStatus(options.hash);\n    }\n\n    public async getTransactionTrace(options: TxHashQueryWrapperOptions): Promise<ProcessResult> {\n        return this.hre.starknetJs.getTransactionTrace(options.hash);\n    }\n\n    public async getTransactionReceipt(options: TxHashQueryWrapperOptions): Promise<ProcessResult> {\n        return this.hre.starknetJs.getTransactionReceipt(options.hash);\n    }\n\n    public async getTransaction(options: TxHashQueryWrapperOptions): Promise<ProcessResult> {\n        return await this.hre.starknetJs.getTransaction(options.hash);\n    }\n\n    public async getBlock(options: BlockQueryWrapperOptions): Promise<ProcessResult> {\n        return this.hre.starknetJs.getBlock(options.hash ?? options.number);\n    }\n\n    public async getNonce(options: NonceQueryWrapperOptions): Promise<ProcessResult> {\n        return this.hre.starknetJs.getNonce(\n            options.address,\n            options.blockHash ?? options.blockNumber\n        );\n    }\n\n    public async getClassHash(artifactPath: string): Promise<string> {\n        const executed = await this.execute(\"get_class_hash\", [artifactPath]);\n        if (executed.statusCode) {\n            throw new StarknetPluginError(executed.stderr.toString());\n        }\n        return executed.stdout.toString().trim();\n    }\n\n    public async getCompiledClassHash(casmPath: string): Promise<string> {\n        const executed = await this.execute(\"get_compiled_class_hash\", [casmPath]);\n        if (executed.statusCode) {\n            throw new StarknetPluginError(executed.stderr.toString());\n        }\n        return executed.stdout.toString().trim();\n    }\n\n    public async getSierraContractClassHash(casmPath: string): Promise<string> {\n        const executed = await this.execute(\"get_contract_class_hash\", [casmPath]);\n        if (executed.statusCode) {\n            throw new StarknetPluginError(executed.stderr.toString());\n        }\n        return executed.stdout.toString().trim();\n    }\n\n    public async estimateMessageFee(\n        functionName: string,\n        fromAddress: string,\n        toAddress: string,\n        inputs: string[]\n    ): Promise<FeeEstimation> {\n        const body = {\n            from_address: fromAddress,\n            to_address: toAddress,\n            entry_point_selector: selector.getSelectorFromName(functionName),\n            payload: inputs.map((item) => num.toHex(BigInt(item)))\n        };\n\n        const response = await axios.post(\n            `${this.hre.starknet.networkConfig.url}/feeder_gateway/estimate_message_fee`,\n            body\n        );\n\n        const { gas_price, gas_usage, overall_fee, unit } = response.data;\n        return {\n            amount: BigInt(overall_fee),\n            unit,\n            gas_price: BigInt(gas_price),\n            gas_usage: BigInt(gas_usage)\n        };\n    }\n}\n\nfunction getFullImageName(image: Image): string {\n    return `${image.repository}:${image.tag}`;\n}\n\nexport class DockerWrapper extends StarknetWrapper {\n    constructor(\n        private image: Image,\n        private rootPath: string,\n        cairoPaths: string[],\n        hre: HardhatRuntimeEnvironment\n    ) {\n        const externalServer = new StarknetDockerProxy(image, rootPath, cairoPaths);\n        super(externalServer, hre);\n        console.log(\n            `${PLUGIN_NAME} plugin using dockerized environment (${getFullImageName(image)})`\n        );\n    }\n}\n\nexport class VenvWrapper extends StarknetWrapper {\n    constructor(venvPath: string, hre: HardhatRuntimeEnvironment) {\n        let pythonPath: string;\n        if (venvPath === \"active\") {\n            console.log(`${PLUGIN_NAME} plugin using the active environment.`);\n            pythonPath = \"python3\";\n        } else {\n            venvPath = normalizeVenvPath(venvPath);\n            console.log(`${PLUGIN_NAME} plugin using environment at ${venvPath}`);\n            pythonPath = getPrefixedCommand(venvPath, \"python3\");\n        }\n\n        super(new StarknetVenvProxy(pythonPath), hre);\n    }\n\n    protected override get gatewayUrl(): string {\n        return this.hre.starknet.networkConfig.url;\n    }\n}\n"
  },
  {
    "path": "src/starknet_cli_wrapper.py",
    "content": "\"\"\"Wrapper of Starknet CLI\"\"\"\n\nimport asyncio\nfrom contextlib import redirect_stderr, redirect_stdout\nfrom http.server import HTTPServer, BaseHTTPRequestHandler\nimport io\nimport json\nimport sys\n\n# imports resolvable in the venv specified by user\ntry:\n    from starkware.starknet.cli.starknet_cli import main as starknet_main\n    from starkware.starknet.compiler.compile import main as starknet_compile_main\n    from starkware.starknet.core.os.contract_class.deprecated_class_hash import compute_deprecated_class_hash\n    from starkware.starknet.services.api.contract_class.contract_class import DeprecatedCompiledClass\n    from starkware.starknet.services.api.contract_class.contract_class import CompiledClass\n    from starkware.starknet.services.api.contract_class.contract_class_utils import load_sierra\n    from starkware.starknet.core.os.contract_class.class_hash import compute_class_hash\n    from starkware.starknet.core.os.contract_class.compiled_class_hash import compute_compiled_class_hash\nexcept ImportError:\n    sys.exit(\"Make sure the environment you configured has starknet (cairo-lang) installed!\")\n\nasync def starknet_main_wrapper(args):\n    sys.argv = [sys.argv[0], *args]\n    return await starknet_main()\n\nasync def starknet_compile_main_wrapper(args):\n    sys.argv = [sys.argv[0], *args]\n    try:\n        return starknet_compile_main()\n    except Exception as err:\n        # stderr was previously redirected to our StringIO\n        print(err, file=sys.stderr)\n        return 1\n\nasync def get_compiled_class_hash(args):\n    \"\"\"Returns compiled_class_hash\"\"\"\n    sys.argv = [sys.argv[0], *args]\n    try:\n        casm_path = args[0]\n        with open(casm_path, encoding=\"utf-8\") as casm_file:\n            compiled_class = CompiledClass.loads(casm_file.read())\n        compiled_class_hash = compute_compiled_class_hash(compiled_class)\n        print(hex(compiled_class_hash))\n        return 0\n    except Exception as err:\n        print(err, file=sys.stderr)\n        return 1\n\ndef get_contract_class(metadata_path):\n    \"\"\"Returns contract class\"\"\"\n    return load_sierra(metadata_path)\n\nasync def get_class_hash(args):\n    path ,= args\n    with open(path, encoding=\"utf-8\") as file:\n        raw_class = json.load(file)\n\n    loaded_class = DeprecatedCompiledClass.load(raw_class)\n    class_hash = compute_deprecated_class_hash(loaded_class)\n    print(hex(class_hash))\n    return 0\n\nasync def get_contract_class_hash(args):\n    path , = args\n    contract_class = get_contract_class(path)\n    print(hex(compute_class_hash(contract_class)))\n    return 0\n\nMAIN_MAP = {\n    \"starknet\": starknet_main_wrapper,\n    \"starknet-compile-deprecated\": starknet_compile_main_wrapper,\n    \"get_class_hash\": get_class_hash,\n    \"get_contract_class_hash\": get_contract_class_hash,\n    \"get_compiled_class_hash\": get_compiled_class_hash,\n}\n\nclass MyRequestHandler(BaseHTTPRequestHandler):\n    def _set_headers(self):\n        self.send_response(200)\n        self.send_header(\"Content-type\", \"application/json\")\n        self.end_headers()\n\n    def _get_json_body(self):\n        content_length = int(self.headers[\"Content-Length\"])\n        raw_request_body = self.rfile.read(content_length).decode(\"utf-8\")\n        return json.loads(raw_request_body)\n\n    exit_code = None\n\n    async def _execute(self):\n        json_body = self._get_json_body()\n\n        command = json_body[\"command\"]\n        main = MAIN_MAP[command]\n\n        try:\n            return await main(json_body[\"args\"])\n        except:\n            return 1 # error exit code\n\n    def do_GET(self):\n        \"\"\"Useful for checking if server is alive.\"\"\"\n        self._set_headers()\n\n    def do_POST(self):\n        stdout = io.StringIO()\n        stderr = io.StringIO()\n        with redirect_stdout(stdout), redirect_stderr(stderr):\n            event_loop = asyncio.get_event_loop()\n            self.exit_code = event_loop.run_until_complete(self._execute())\n\n        resp = {\n            \"statusCode\": self.exit_code,\n            \"stdout\": stdout.getvalue(),\n            \"stderr\": stderr.getvalue()\n        }\n\n        self._set_headers()\n        self.wfile.write(json.dumps(resp).encode(\"utf-8\"))\n\ntry:\n    port = int(sys.argv[1])\nexcept:\n    sys.exit(\"A numeric port must be specified\")\n\ndef run(server_class=HTTPServer, handler_class=MyRequestHandler):\n    server_address = (\"\", port)\n    httpd = server_class(server_address, handler_class)\n    print(\"Listening on port\", port)\n    try:\n        httpd.serve_forever()\n    except KeyboardInterrupt:\n        print(\"Exiting\")\n\nrun()\n"
  },
  {
    "path": "src/task-actions.ts",
    "content": "import * as path from \"path\";\nimport * as fs from \"fs\";\nimport axios from \"axios\";\nimport FormData = require(\"form-data\");\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport {\n    ABI_SUFFIX,\n    ALPHA_TESTNET,\n    CAIRO1_SIERRA_SUFFIX,\n    CAIRO1_ASSEMBLY_SUFFIX,\n    DEFAULT_STARKNET_NETWORK\n} from \"./constants\";\nimport { ProcessResult } from \"@nomiclabs/hardhat-docker\";\nimport { adaptLog, traverseFiles, getNetwork, isStarknetDevnet, adaptPath } from \"./utils\";\nimport {\n    HardhatNetworkConfig,\n    HardhatRuntimeEnvironment,\n    HttpNetworkConfig,\n    RunSuperFunction,\n    TaskArguments\n} from \"hardhat/types\";\nimport { createIntegratedDevnet } from \"./external-server\";\nimport { Recompiler } from \"./recompiler\";\nimport { version } from \"../package.json\";\nimport * as toml from \"@iarna/toml\";\nimport { ScarbWrapper } from \"./scarb-wrapper\";\nimport { ScarbConfig } from \"./types\";\nimport { getCairoBinDirPath } from \"./cairo1-compiler\";\n\nfunction checkSourceExists(sourcePath: string): void {\n    if (!fs.existsSync(sourcePath)) {\n        const msg = `Source expected to be at ${sourcePath}, but not found.`;\n        throw new StarknetPluginError(msg);\n    }\n}\n\n/**\n * Transfers logs and generates a return status code.\n *\n * @param executed The process result of running the container\n * @returns 0 if succeeded, 1 otherwise\n */\nfunction processExecuted(executed: ProcessResult, logStatus: boolean): number {\n    if (executed.stdout.length) {\n        console.log(adaptLog(executed.stdout.toString()));\n    }\n\n    if (executed.stderr.length) {\n        // synchronize param names reported by actual CLI with param names used by this plugin\n        const err = executed.stderr.toString();\n        const replacedErr = adaptLog(err);\n        console.error(replacedErr);\n    }\n\n    if (logStatus) {\n        const finalMsg = executed.statusCode ? \"Failed\" : \"Succeeded ✅\";\n        console.log(`\\t${finalMsg}\\n`);\n    }\n    return executed.statusCode ? 1 : 0;\n}\n\n/**\n * First deletes the file if it already exists. Then creates an empty file at the provided path.\n * Unlinking/deleting is necessary if user switched from docker to venv.\n * @param filePath the file to be recreated\n */\nfunction initializeFile(filePath: string) {\n    if (fs.existsSync(filePath)) {\n        fs.unlinkSync(filePath);\n    }\n    fs.closeSync(fs.openSync(filePath, \"w\"));\n}\n\nfunction getFileName(filePath: string) {\n    return path.basename(filePath, path.extname(filePath));\n}\n\nclass ScarbConfigValidationError extends StarknetPluginError {\n    constructor(path: string, message: string, parent?: Error) {\n        super(\n            `Invalid config file ${path}: ${message}\\n` +\n                \"To skip this validation, use the --skip-validate flag in the CLI\",\n            parent\n        );\n    }\n}\n\nfunction loadScarbTomlFromPath(tomlPath: string, validate: boolean): ScarbConfig {\n    const config = toml.parse(\n        fs.readFileSync(tomlPath, \"utf-8\").toString()\n    ) as unknown as ScarbConfig;\n    const packageName = config.package.name;\n\n    if (validate) {\n        // it's an array of possible compilation configs\n        const contractTargetConfigs = config?.target[\"starknet-contract\"] || [];\n        const configCandidates = contractTargetConfigs.filter(\n            (config) => !config.name || config.name === packageName\n        );\n\n        if (configCandidates.length === 0) {\n            throw new ScarbConfigValidationError(\n                tomlPath,\n                \"Property 'name' of [[target.starknet-contract]] must be left out or equal the [package] name\"\n            );\n        } else if (configCandidates.length > 1) {\n            // this case is handled by Scarb\n        }\n\n        const contractTargetConfig = configCandidates[0]; // assume length = 1\n        if (!contractTargetConfig || !contractTargetConfig.sierra || !contractTargetConfig.casm) {\n            throw new ScarbConfigValidationError(\n                tomlPath,\n                \"To allow later loading of this project's contracts, \" +\n                    \"your TOML file must set 'sierra' and 'casm' to `true` under [[target.starknet-contract]]\"\n            );\n        }\n    }\n    return config;\n}\n\nfunction loadScarbMainArtifact(scarbArtifactDirPath: string, packageName: string) {\n    const mainPackageArtifactPath = path.join(\n        scarbArtifactDirPath,\n        `${packageName}.starknet_artifacts.json`\n    );\n    if (!fs.existsSync(mainPackageArtifactPath)) {\n        const msg = `Error in building ${packageName}, could not find ${mainPackageArtifactPath}`;\n        throw new StarknetPluginError(msg);\n    }\n    return JSON.parse(fs.readFileSync(mainPackageArtifactPath, \"utf-8\").toString());\n}\n\nasync function findPackageConfigPaths(\n    traversablePaths: string[],\n    root: string,\n    configFileName = \"Scarb.toml\"\n) {\n    // collect all package configs by traversing provided paths\n    const packageConfigPaths: string[] = [];\n    for (let traversablePath of traversablePaths) {\n        traversablePath = adaptPath(root, traversablePath);\n        checkSourceExists(traversablePath);\n        const traversionResult = await traverseFiles(traversablePath, configFileName);\n        packageConfigPaths.push(\n            ...traversionResult.filter((p) => path.basename(p) == configFileName)\n        );\n    }\n\n    if (!packageConfigPaths.length) {\n        const msg = `No projects to build. Could not find directories containing ${configFileName}`;\n        throw new StarknetPluginError(msg);\n    }\n\n    return packageConfigPaths;\n}\n\nexport async function starknetCompileCairo1Action(\n    args: TaskArguments,\n    hre: HardhatRuntimeEnvironment\n) {\n    const binDirPath = await getCairoBinDirPath(args, hre.config.starknet);\n\n    const root = hre.config.paths.root;\n    const rootRegex = new RegExp(\"^\" + root);\n\n    const defaultSourcesPath = hre.config.paths.starknetSources;\n    const sourcesPaths: string[] = args.paths || [defaultSourcesPath];\n    const artifactsPath = hre.config.paths.starknetArtifacts;\n\n    let statusCode = 0;\n    for (let sourcesPath of sourcesPaths) {\n        sourcesPath = adaptPath(root, sourcesPath);\n        checkSourceExists(sourcesPath);\n\n        const recompiler = new Recompiler(hre);\n        const files = await traverseFiles(sourcesPath, \"*.cairo\");\n        for (const file of files) {\n            console.log(\"Compiling\", file);\n\n            const dirSuffix = file.replace(rootRegex, \"\");\n            const fileName = getFileName(dirSuffix);\n            const dirPath = path.join(artifactsPath, dirSuffix);\n            const outputPath = path.join(dirPath, `${fileName}${CAIRO1_SIERRA_SUFFIX}`);\n\n            fs.mkdirSync(dirPath, { recursive: true });\n            initializeFile(outputPath);\n\n            // Compile to sierra representation\n            {\n                const executed = await hre.starknetWrapper.compileCairoToSierra({\n                    path: file,\n                    output: outputPath,\n                    binDirPath,\n                    replaceIds: args.replaceIds,\n                    allowedLibfuncsListName: args.allowedLibfuncsListName,\n                    allowedLibfuncsListFile: args.allowedLibfuncsListFile,\n                    singleFile: args.singleFile\n                });\n                statusCode += processExecuted(executed, true);\n\n                if (executed.statusCode) {\n                    // continue with compiling to casm only if compiling to sierra succeeded\n                    continue;\n                }\n            }\n\n            // Copy abi array from output to abiOutput\n            const abiOutput = path.join(dirPath, `${fileName}${ABI_SUFFIX}`);\n            initializeFile(abiOutput);\n\n            const outputJson = JSON.parse(fs.readFileSync(outputPath, \"utf-8\"));\n            fs.writeFileSync(abiOutput, JSON.stringify(outputJson.abi) + \"\\n\");\n\n            const casmOutput = path.join(dirPath, `${fileName}${CAIRO1_ASSEMBLY_SUFFIX}`);\n            initializeFile(casmOutput);\n\n            // Compile sierra to casm representation\n            {\n                const executed = await hre.starknetWrapper.compileSierraToCasm({\n                    file: outputPath,\n                    output: casmOutput,\n                    binDirPath,\n                    addPythonicHints: args.addPythonicHints,\n                    allowedLibfuncsListName: args.allowedLibfuncsListName,\n                    allowedLibfuncsListFile: args.allowedLibfuncsListFile\n                });\n                statusCode += processExecuted(executed, true);\n            }\n\n            // Update cache after compilation\n            await recompiler.updateCache(args, file, outputPath, abiOutput);\n        }\n        await recompiler.saveCache();\n    }\n\n    if (statusCode) {\n        const msg = `Failed compilation of ${statusCode} contract${statusCode === 1 ? \"\" : \"s\"}.`;\n        throw new StarknetPluginError(msg);\n    }\n}\n\nexport async function starknetDeprecatedCompileAction(\n    args: TaskArguments,\n    hre: HardhatRuntimeEnvironment\n) {\n    const root = hre.config.paths.root;\n    const rootRegex = new RegExp(\"^\" + root);\n\n    const defaultSourcesPath = hre.config.paths.starknetSources;\n    const sourcesPaths: string[] = args.paths || [defaultSourcesPath];\n    const artifactsPath = hre.config.paths.starknetArtifacts;\n\n    const cairoPaths = [defaultSourcesPath, root];\n    if (args.cairoPath) {\n        args.cairoPath.split(\":\").forEach((path: string) => {\n            cairoPaths.push(path);\n        });\n    }\n    if (hre.config.paths.cairoPaths) {\n        hre.config.paths.cairoPaths.forEach((path: string) => {\n            cairoPaths.push(path);\n        });\n    }\n    for (let i = 0; i < cairoPaths.length; i++) {\n        if (!path.isAbsolute(cairoPaths[i])) {\n            cairoPaths[i] = adaptPath(root, cairoPaths[i]);\n        }\n    }\n\n    const cairoPath = cairoPaths.join(\":\");\n    let statusCode = 0;\n    for (let sourcesPath of sourcesPaths) {\n        sourcesPath = adaptPath(root, sourcesPath);\n        checkSourceExists(sourcesPath);\n        const files = await traverseFiles(sourcesPath, \"*.cairo\");\n        const recompiler = new Recompiler(hre);\n        for (const file of files) {\n            console.log(\"Compiling\", file);\n            const dirSuffix = file.replace(rootRegex, \"\");\n            const fileName = getFileName(dirSuffix);\n            const dirPath = path.join(artifactsPath, dirSuffix);\n            const outputPath = path.join(dirPath, `${fileName}.json`);\n            const abiPath = path.join(dirPath, `${fileName}${ABI_SUFFIX}`);\n\n            fs.mkdirSync(dirPath, { recursive: true });\n            initializeFile(outputPath);\n            initializeFile(abiPath);\n\n            const executed = await hre.starknetWrapper.deprecatedCompile({\n                file,\n                output: outputPath,\n                abi: abiPath,\n                cairoPath,\n                accountContract: args.accountContract,\n                disableHintValidation: args.disableHintValidation\n            });\n\n            // Update cache after compilation\n            await recompiler.updateCache(args, file, outputPath, abiPath, cairoPath);\n            statusCode += processExecuted(executed, true);\n        }\n        await recompiler.saveCache();\n    }\n\n    if (statusCode) {\n        const msg = `Failed compilation of ${statusCode} contract${statusCode === 1 ? \"\" : \"s\"}.`;\n        throw new StarknetPluginError(msg);\n    }\n}\n\nexport async function starknetBuildAction(args: TaskArguments, hre: HardhatRuntimeEnvironment) {\n    const root = hre.config.paths.root;\n    const rootRegex = new RegExp(\"^\" + root);\n\n    const defaultSourcesPath = hre.config.paths.starknetSources;\n    const traversablePaths: string[] = args.paths || [defaultSourcesPath];\n    const packageConfigPaths = await findPackageConfigPaths(traversablePaths, root);\n\n    const artifactsPath = hre.config.paths.starknetArtifacts;\n\n    const scarbWrapper = ScarbWrapper.getInstance(args, hre);\n\n    let statusCode = 0;\n    for await (const packageConfigPath of packageConfigPaths) {\n        // each config path is assumed to be of format $hardhat_project_root/<CAIRO_DIR>/Scarb.toml\n        let packageConfig = null;\n        try {\n            packageConfig = loadScarbTomlFromPath(packageConfigPath, !args.skipValidate);\n        } catch (error) {\n            console.error(error);\n            statusCode += 1;\n            continue;\n        }\n        const packageName = packageConfig.package.name;\n\n        // strip \"Scarb.toml\" from path end to get $hardhat_project_root/<CAIRO_DIR>/\n        const packageDir = path.dirname(packageConfigPath);\n        console.log(`Building package ${packageName} from ${packageDir}`);\n\n        // not using path.basename(...) because it could be a more complex path than just the directory name\n        const dirSuffix = packageDir.replace(rootRegex, \"\"); // <CAIRO_DIR>/\n        const artifactDirPath = path.join(artifactsPath, dirSuffix); // starknet-artifacts/<CAIRO_DIR>/\n\n        const executed = scarbWrapper.build(packageConfigPath, artifactDirPath);\n        statusCode += processExecuted(executed, true);\n        if (executed.statusCode) {\n            // continue with compiling to casm only if compiling to sierra succeeded\n            continue;\n        }\n\n        // by default (dev mode, unlike the release mode), scarb stores artifacts in subdir \"dev\"\n        const scarbArtifactDirPath = path.join(artifactDirPath, \"dev\");\n\n        // load scarb's main build artifact\n        const mainPackageArtifact = loadScarbMainArtifact(scarbArtifactDirPath, packageName);\n\n        for (const contractEntry of mainPackageArtifact.contracts) {\n            // package_contract (underscore separation)\n            const fileName = `${contractEntry.package_name}_${contractEntry.contract_name}`;\n\n            // artifact dir created by us, not the one created by scarb\n            const ourArtifactDirPath = path.join(artifactDirPath, `${fileName}.cairo`);\n            fs.mkdirSync(ourArtifactDirPath, { recursive: true });\n\n            // We want to create artifacts compatible with our contract loading mechanisms.\n            // To achieve this, we will now copy scarb artifacts\n\n            // this is false if user skipped validation\n            if (contractEntry.artifacts.sierra) {\n                const scarbSierraPath = path.join(\n                    scarbArtifactDirPath,\n                    contractEntry.artifacts.sierra\n                );\n                const ourSierraPath = path.join(\n                    ourArtifactDirPath,\n                    `${fileName}${CAIRO1_SIERRA_SUFFIX}`\n                );\n                fs.copyFileSync(scarbSierraPath, ourSierraPath);\n\n                // Copy abi array from output to abiOutput\n                const abiOutput = path.join(ourArtifactDirPath, `${fileName}${ABI_SUFFIX}`);\n                initializeFile(abiOutput);\n\n                const outputJson = JSON.parse(fs.readFileSync(scarbSierraPath, \"utf-8\"));\n                fs.writeFileSync(abiOutput, JSON.stringify(outputJson.abi) + \"\\n\");\n            }\n\n            // this is false if user skipped validation\n            if (contractEntry.artifacts.casm) {\n                const scarbCasmPath = path.join(scarbArtifactDirPath, contractEntry.artifacts.casm);\n                const ourCasmPath = path.join(\n                    ourArtifactDirPath,\n                    `${fileName}${CAIRO1_ASSEMBLY_SUFFIX}`\n                );\n                fs.copyFileSync(scarbCasmPath, ourCasmPath);\n            }\n        }\n    }\n\n    if (statusCode) {\n        const msg = `Failed building of ${statusCode} project${statusCode === 1 ? \"\" : \"s\"}.`;\n        throw new StarknetPluginError(msg);\n    }\n}\n\nexport async function amarnaAction(args: TaskArguments, hre: HardhatRuntimeEnvironment) {\n    await hre.amarnaDocker.run(args);\n}\n\n/**\n * Extracts the verification URL assigned to the network provided.\n * If no `networkName` is provided, defaults to Alpha testnet.\n * If `networkName` is provided, but not supported for verification, an error is thrown.\n * @param networkName the name of the network\n * @param hre the runtime environment from which network data is extracted\n * @param origin short string describing where/how `networkName` was specified\n */\nfunction getVerificationNetwork(\n    networkName: string,\n    hre: HardhatRuntimeEnvironment,\n    origin: string\n) {\n    networkName ||= ALPHA_TESTNET;\n    const network = getNetwork<HttpNetworkConfig>(networkName, hre.config.networks, origin);\n    if (!network.verificationUrl) {\n        throw new StarknetPluginError(\n            `Network ${networkName} does not support Voyager verification.`\n        );\n    }\n    return network;\n}\n\nexport async function starknetVoyagerAction(args: TaskArguments, hre: HardhatRuntimeEnvironment) {\n    const network = getVerificationNetwork(args.starknetNetwork, hre, \"--starknet-network\");\n    const voyagerUrl = `${network.verificationUrl}${args.address}/code`;\n    const verifiedUrl = `${network.verifiedUrl}${args.address}#code`;\n\n    let isVerified = false;\n    try {\n        const resp = await axios.get(voyagerUrl);\n        const data = resp.data;\n\n        if (data.contract) {\n            if (data.contract.length > 0 || Object.keys(data.contract).length > 0) {\n                isVerified = true;\n            }\n        }\n    } catch (error) {\n        const msg =\n            \"Something went wrong while checking if the contract has already been verified.\";\n        throw new StarknetPluginError(msg);\n    }\n\n    if (isVerified) {\n        console.log(`Contract at address ${args.address} has already been verified`);\n        console.log(`Check it out on Voyager: ${verifiedUrl}`);\n    } else {\n        await handleContractVerification(args, voyagerUrl, verifiedUrl, hre);\n    }\n}\n\nfunction getMainVerificationPath(contractPath: string, root: string) {\n    if (!path.isAbsolute(contractPath)) {\n        contractPath = adaptPath(root, contractPath);\n        if (!fs.existsSync(contractPath)) {\n            throw new StarknetPluginError(`File ${contractPath} does not exist`);\n        }\n    }\n    return contractPath;\n}\n\nasync function handleContractVerification(\n    args: TaskArguments,\n    voyagerUrl: string,\n    verifiedUrl: string,\n    hre: HardhatRuntimeEnvironment\n) {\n    // Set main contract path\n    const mainPath = getMainVerificationPath(args.path, hre.config.paths.root);\n    const paths = [mainPath];\n\n    const bodyFormData = new FormData();\n    bodyFormData.append(\"compiler-version\", args.compilerVersion);\n    const accountContract = args.accountContract ? \"true\" : \"false\";\n    bodyFormData.append(\"account-contract\", accountContract);\n    bodyFormData.append(\"license\", args.license || \"No License (None)\");\n\n    // Dependencies (non-main contracts) are in args.paths\n    if (args.paths) {\n        paths.push(...args.paths);\n    }\n\n    const sourceRegex = new RegExp(\"^\" + hre.config.paths.starknetSources + \"/\");\n    const contractNameDefault = mainPath.replace(sourceRegex, \"\");\n    // If contract name is not provided, use the default\n    bodyFormData.append(\"contract-name\", contractNameDefault);\n    // Appends all contracts to the form data with the name \"file\" + index\n    handleMultiPartContractVerification(bodyFormData, paths, hre.config.paths.root, sourceRegex);\n\n    await axios\n        .post(voyagerUrl, bodyFormData.getBuffer(), {\n            headers: bodyFormData.getHeaders()\n        })\n        .catch((err) => {\n            throw new StarknetPluginError(\n                `\\\nCould not verify the contract at address ${args.address}.\n${\n    err.response.data.message ||\n    `It is hard to tell exactly what happened, but possible reasons include:\n- Deployment transaction hasn't been accepted or indexed yet (check its tx_status or try in a minute)\n- Wrong contract address\n- Wrong files provided\n- Wrong main contract chosen (first after --path)\n- Voyager is down`\n}\n            `\n            );\n        });\n\n    console.log(`Contract has been successfully verified at address ${args.address}`);\n    console.log(`Check it out on Voyager: ${verifiedUrl}`);\n}\n\nfunction handleMultiPartContractVerification(\n    bodyFormData: FormData,\n    paths: string[],\n    root: string,\n    sourceRegex: RegExp\n) {\n    paths.forEach(function (item: string, index: number) {\n        if (!path.isAbsolute(item)) {\n            paths[index] = adaptPath(root, item);\n            if (!fs.existsSync(paths[index])) {\n                throw new StarknetPluginError(`File ${paths[index]} does not exist`);\n            }\n        }\n        bodyFormData.append(\"file\" + index, fs.readFileSync(paths[index]), {\n            filepath: paths[index].replace(sourceRegex, \"\"),\n            contentType: \"application/octet-stream\"\n        });\n    });\n}\n\n/**\n * Used later on for network interaction.\n * @param args Hardhat CLI args\n * @param hre HardhatRuntimeEnvironment\n */\nfunction setRuntimeNetwork(args: TaskArguments, hre: HardhatRuntimeEnvironment) {\n    let networkName;\n    let networkConfig: HardhatNetworkConfig;\n    if (args.starknetNetwork) {\n        networkName = args.starknetNetwork;\n        networkConfig = getNetwork(networkName, hre.config.networks, \"--starknet-network\");\n    } else if (hre.config.starknet.network) {\n        networkName = hre.config.starknet.network;\n        networkConfig = getNetwork(\n            networkName,\n            hre.config.networks,\n            \"starknet.network in hardhat.config\"\n        );\n    } else {\n        networkName = DEFAULT_STARKNET_NETWORK;\n        networkConfig = getNetwork(networkName, hre.config.networks, \"default settings\");\n    }\n\n    hre.starknet.network = networkName;\n    hre.starknet.networkConfig = networkConfig;\n\n    hre.starknetJs.setProvider(hre.starknet.networkConfig);\n\n    console.log(`Using network ${hre.starknet.network} at ${hre.starknet.networkConfig.url}`);\n}\n\nasync function runWithDevnet(hre: HardhatRuntimeEnvironment, fn: () => Promise<unknown>) {\n    if (!isStarknetDevnet(hre.starknet.network)) {\n        await fn();\n        return;\n    }\n\n    const devnet = createIntegratedDevnet(hre);\n\n    await devnet.start();\n    await fn();\n    devnet.stop();\n}\n\nexport async function starknetTestAction(\n    args: TaskArguments,\n    hre: HardhatRuntimeEnvironment,\n    runSuper: RunSuperFunction<TaskArguments>\n) {\n    setRuntimeNetwork(args, hre);\n    await new Recompiler(hre).handleCache();\n\n    await runWithDevnet(hre, async () => {\n        await runSuper(args);\n    });\n}\n\nexport async function starknetRunAction(\n    args: TaskArguments,\n    hre: HardhatRuntimeEnvironment,\n    runSuper: RunSuperFunction<TaskArguments>\n) {\n    if (args.starknetNetwork) {\n        throw new StarknetPluginError(`Using \"--starknet-network\" with \"hardhat run\" currently does not have effect.\nUse the \"network\" property of the \"starknet\" object in your hardhat config file.`);\n    }\n    setRuntimeNetwork(args, hre);\n    await new Recompiler(hre).handleCache();\n\n    await runWithDevnet(hre, async () => {\n        await runSuper(args);\n    });\n}\n\nexport async function starknetPluginVersionAction() {\n    console.log(`Version: ${version}`);\n}\n"
  },
  {
    "path": "src/type-extensions.ts",
    "content": "import \"hardhat/types/config\";\nimport \"hardhat/types/runtime\";\nimport { GetBlockResponse } from \"starknet\";\n\nimport { Account } from \"./account\";\nimport { StarknetChainId } from \"./constants\";\nimport { AmarnaDocker } from \"./external-server/docker-amarna\";\nimport { Transaction, TransactionReceipt, TransactionTrace } from \"./starknet-types\";\nimport { StarknetLegacyWrapper } from \"./starknet-js-wrapper\";\nimport { StarknetWrapper } from \"./starknet-wrappers\";\nimport { StarknetContract, StarknetContractFactory, StringMap } from \"./types\";\nimport * as DevnetTypes from \"./types/devnet\";\nimport * as StarknetTypes from \"./types/starknet\";\n\ndeclare module \"hardhat/types/config\" {\n    export interface ProjectPathsUserConfig {\n        starknetArtifacts?: string;\n        starknetSources?: string;\n        cairoPaths?: string[];\n    }\n\n    export interface ProjectPathsConfig {\n        starknetArtifacts: string;\n        starknetSources?: string;\n        cairoPaths?: string[];\n    }\n\n    export interface HardhatConfig {\n        starknet: StarknetTypes.StarknetConfig;\n    }\n\n    export interface HardhatUserConfig {\n        starknet?: StarknetTypes.StarknetConfig;\n    }\n\n    export interface NetworksConfig {\n        alphaGoerli: HttpNetworkConfig;\n        alphaGoerli2: HttpNetworkConfig;\n        alphaMainnet: HttpNetworkConfig;\n        integratedDevnet: HardhatNetworkConfig;\n    }\n\n    export interface NetworksUserConfig {\n        integratedDevnet?: HardhatNetworkUserConfig;\n    }\n\n    export interface HttpNetworkConfig {\n        verificationUrl?: string;\n        verifiedUrl?: string;\n        starknetChainId?: StarknetChainId;\n        vmLang?: VmLang;\n    }\n\n    export interface HardhatNetworkConfig {\n        url?: string;\n        venv?: string;\n        dockerizedVersion?: string;\n        starknetChainId?: StarknetChainId;\n        args?: string[];\n        stdout?: string;\n        stderr?: string;\n        vmLang?: VmLang;\n    }\n\n    export interface HardhatNetworkUserConfig {\n        url?: string;\n        venv?: string;\n        dockerizedVersion?: string;\n        args?: string[];\n        stdout?: string;\n        stderr?: string;\n        vmLang?: VmLang;\n    }\n\n    type VmLang = \"python\" | \"rust\" | \"\";\n}\n\ntype StarknetContractType = StarknetContract;\ntype StarknetContractFactoryType = StarknetContractFactory;\ntype StringMapType = StringMap;\ntype AccountType = Account;\ntype TransactionReceiptType = TransactionReceipt;\ntype TransactionTraceType = TransactionTrace;\ntype TransactionType = Transaction;\ntype BlockType = GetBlockResponse;\n\ndeclare module \"hardhat/types/runtime\" {\n    export interface Devnet extends DevnetTypes.Devnet {}\n    interface HardhatRuntimeEnvironment {\n        starknetWrapper: StarknetWrapper;\n        amarnaDocker: AmarnaDocker;\n        starknet: StarknetTypes.Starknet;\n        starknetJs: StarknetLegacyWrapper;\n    }\n\n    type StarknetContract = StarknetContractType;\n    type StarknetContractFactory = StarknetContractFactoryType;\n    type StringMap = StringMapType;\n    type Account = AccountType;\n    type Transaction = TransactionType;\n    type TransactionReceipt = TransactionReceiptType;\n    type TransactionTrace = TransactionTraceType;\n    type Block = BlockType;\n}\n"
  },
  {
    "path": "src/types/devnet.ts",
    "content": "import { Numeric } from \".\";\nimport {\n    FlushResponse,\n    IncreaseTimeResponse,\n    LoadL1MessagingContractResponse,\n    SetTimeResponse,\n    PredeployedAccount,\n    L1ToL2MockTxResponse,\n    L2ToL1MockTxResponse,\n    NewBlockResponse\n} from \"../devnet-utils\";\nimport { MintResponse } from \"../starknet-types\";\n\nexport interface Devnet {\n    /**\n     * Restarts the devnet.\n     * @returns void\n     * @throws {@link StarknetPluginError}\n     */\n    restart(): Promise<void>;\n\n    /**\n     * Handles all pending L1 to L2 messages and sends them to the other layer\n     * @returns {Promise} - Metadata for the flushed messages\n     */\n    flush: () => Promise<FlushResponse>;\n\n    /**\n     * Deploys or loads the L1 messaging contract.\n     * @param {string} networkUrl - L1 network url.\n     * @param {string} [address] - Address of the contract to be loaded.\n     * @param {string} [networkId] - Determines if the ganache or testnet should be used/\n     * @returns\n     */\n    loadL1MessagingContract: (\n        networkUrl: string,\n        address?: string,\n        networkId?: string\n    ) => Promise<LoadL1MessagingContractResponse>;\n\n    /**\n     * Sends a mock message from L1 to L2 without running L1.\n     * @param {string} l2ContractAddress - Address of the L2 contract.\n     * @param {string} functionName - Function name for entry point selector.\n     * @param {string} l1ContractAddress - Address of the L1 contract.\n     * @param {Array<string>} payload - Payload to send to the L2 network.\n     * @param {string} nonce - Nonce value\n     * @param {string} paidFeeOnL1 - Paid fee on L1\n     * @returns Transaction hash\n     */\n    sendMessageToL2: (\n        l2ContractAddress: string,\n        functionName: string,\n        l1ContractAddress: string,\n        payload: Array<Numeric>,\n        nonce: Numeric,\n        paidFeeOnL1: Numeric\n    ) => Promise<L1ToL2MockTxResponse>;\n\n    /**\n     * Sends a mock message from L2 to L1\n     * @param {string} l2ContractAddress - Address of the L2 contract.\n     * @param {string} l1ContractAddress - Address of the L1 contract.\n     * @param {Array<Numeric>} payload - Payload to send to the L1 network.\n     * @returns Message hash\n     */\n    consumeMessageFromL2: (\n        l2ContractAddress: string,\n        l1ContractAddress: string,\n        payload: Array<Numeric>\n    ) => Promise<L2ToL1MockTxResponse>;\n\n    /**\n     * Increases block time offset\n     * @param seconds the offset increase in seconds\n     * @returns an object containing the increased block time offset\n     */\n    increaseTime: (seconds: number) => Promise<IncreaseTimeResponse>;\n\n    /**\n     * Sets the timestamp of next block\n     * @param seconds timestamp in seconds\n     * @returns an object containing next block timestamp\n     */\n    setTime: (seconds: number) => Promise<SetTimeResponse>;\n\n    /**\n     * Fetch the predeployed accounts\n     * @returns an object containing array of account's metadata\n     */\n    getPredeployedAccounts: () => Promise<PredeployedAccount[]>;\n\n    /**\n     * Preserves devnet instance to a file\n     * @param path  path for the dumping\n     * @return void\n     */\n    dump: (path: string) => Promise<void>;\n\n    /**\n     * Loads stored Starknet chain state\n     * @param path  path for the dump file\n     * @returns void\n     */\n    load: (path: string) => Promise<void>;\n\n    /**\n     * Creates an empty block\n     * @returns NewBlockResponse with block hash\n     */\n    createBlock: () => Promise<NewBlockResponse>;\n\n    /**\n     * Assumes there is a /mint endpoint on the current starknet network\n     * @param address the address to fund\n     * @param amount the amount to fund\n     * @param lite whether to make it lite or not\n     */\n    mint: (address: string, amount: number, lite?: boolean) => Promise<MintResponse>;\n}\n"
  },
  {
    "path": "src/types/index.ts",
    "content": "import { HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport fs from \"node:fs\";\nimport { CallData, SequencerProvider, events as eventUtil, hash, json, selector } from \"starknet\";\n\nimport { adaptInputUtil, adaptOutputUtil, formatFelt } from \"../adapt\";\nimport {\n    CHECK_STATUS_RECOVER_TIMEOUT,\n    QUERY_VERSION,\n    TRANSACTION_VERSION,\n    HEXADECIMAL_REGEX,\n    CHECK_STATUS_TIMEOUT\n} from \"../constants\";\nimport { StarknetPluginError } from \"../starknet-plugin-error\";\nimport * as starknet from \"../starknet-types\";\nimport { StarknetWrapper } from \"../starknet-wrappers\";\nimport { adaptLog, copyWithBigint, findConstructor, sleep, warn } from \"../utils\";\n\n/**\n * According to: https://starknet.io/docs/hello_starknet/intro.html#interact-with-the-contract\n * Not using an enum to avoid code duplication and reverse mapping.\n */\nexport type TxStatus =\n    /** The transaction passed the validation and entered the pending block. */\n    | \"PENDING\"\n\n    /** The transaction has not been received yet (i.e., not written to storage). */\n    | \"NOT_RECEIVED\"\n\n    /** The transaction was received by the operator. */\n    | \"RECEIVED\"\n\n    /** The transaction failed validation and thus was skipped. */\n    | \"REJECTED\"\n\n    /** The transaction passed validation but failed execution, and will be (or was)\n     * included in a block (nonce will be incremented and an execution fee will be charged).\n     * This status does not distinguish between accepted on L2 / accepted on L1 blocks.\n     */\n    | \"REVERTED\"\n\n    /** The transaction passed the validation and entered an actual created block. */\n    | \"ACCEPTED_ON_L2\"\n\n    /** The transaction was accepted on-chain. */\n    | \"ACCEPTED_ON_L1\";\n\nexport type InvokeResponse = string;\n\nexport type StarknetContractFactoryConfig = {\n    abiPath: string;\n    casmPath?: string;\n    metadataPath: string;\n    hre: HardhatRuntimeEnvironment;\n};\n\nexport interface StarknetContractConfig {\n    abiPath: string;\n    hre: HardhatRuntimeEnvironment;\n    isCairo1: boolean;\n}\n\nexport type Numeric = number | bigint;\n\n/**\n * Object whose keys are strings (names) and values are any object.\n */\nexport interface StringMap {\n    [key: string]: any;\n}\n\n/**\n * Object holding the event name and have a property data of type StingMap.\n */\nexport interface DecodedEvent {\n    name: string;\n    data: StringMap;\n}\n\n/**\n * Enumerates the ways of interacting with a contract.\n */\nexport class InteractChoice {\n    static readonly INVOKE = new InteractChoice([\"invoke\"], \"invoke\", true, TRANSACTION_VERSION);\n\n    static readonly CALL = new InteractChoice([\"call\"], \"call\", false, QUERY_VERSION);\n\n    static readonly ESTIMATE_FEE = new InteractChoice(\n        [\"invoke\", \"--estimate_fee\"],\n        \"estimateFee\",\n        false,\n        QUERY_VERSION\n    );\n\n    private constructor(\n        /**\n         * The way it's supposed to be used passed to CLI commands.\n         */\n        public readonly cliCommand: string[],\n        /**\n         * The way it's supposed to be used internally in code.\n         */\n        public readonly internalCommand: keyof StarknetContract,\n\n        /**\n         * Indicates whether the belonging CLI option allows specifying max_fee.\n         */\n        public readonly allowsMaxFee: boolean,\n\n        /**\n         * The version of the transaction.\n         */\n        public transactionVersion: Numeric\n    ) {}\n}\n\nexport function extractClassHash(response: string) {\n    return extractFromResponse(response, /^Contract class hash: (.*)$/m);\n}\n\nfunction extractTxHash(response: string) {\n    return extractFromResponse(response, /^Transaction hash: (.*)$/m);\n}\n\nfunction extractFromResponse(response: string, regex: RegExp) {\n    const matched = response.match(regex);\n    if (!matched || !matched[1]) {\n        throw new StarknetPluginError(\n            `Could not parse response. Check that you're using the correct network. Response received: ${response}`\n        );\n    }\n    return matched[1];\n}\n\n/**\n * The object returned by starknet tx_status.\n */\ntype StatusObject = {\n    block_hash: string;\n    tx_status: TxStatus;\n    tx_failure_reason?: starknet.TxFailureReason;\n};\n\nasync function checkStatus(hash: string, starknetWrapper: StarknetWrapper): Promise<StatusObject> {\n    const executed = await starknetWrapper.getTxStatus({\n        hash\n    });\n    if (executed.statusCode) {\n        throw new StarknetPluginError(executed.stderr.toString());\n    }\n\n    const response = executed.stdout.toString();\n    try {\n        const responseParsed = JSON.parse(response);\n        return responseParsed;\n    } catch (err) {\n        throw new StarknetPluginError(`Cannot interpret the following: ${response}`);\n    }\n}\n\nconst ACCEPTABLE_STATUSES: TxStatus[] = [\"PENDING\", \"ACCEPTED_ON_L2\", \"ACCEPTED_ON_L1\"];\nexport function isTxAccepted(statusObject: StatusObject): boolean {\n    return ACCEPTABLE_STATUSES.includes(statusObject.tx_status);\n}\n\nconst UNACCEPTABLE_STATUSES: TxStatus[] = [\"REJECTED\", \"REVERTED\"];\nfunction isTxRejected(statusObject: StatusObject): boolean {\n    return UNACCEPTABLE_STATUSES.includes(statusObject.tx_status);\n}\n\nexport async function iterativelyCheckStatus(\n    txHash: string,\n    starknetWrapper: StarknetWrapper,\n    resolve: (status: string) => void,\n    reject: (reason: Error) => void,\n    retryCount = 10\n) {\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        let count = retryCount;\n        let statusObject: StatusObject;\n        let error;\n        while (count > 0) {\n            // This promise is rejected usually if the network is unavailable\n            statusObject = await checkStatus(txHash, starknetWrapper).catch((reason) => {\n                error = reason;\n                return undefined;\n            });\n            // Check count at 1 to avoid unnecessary waiting(sleep) in the last iteration\n            if (statusObject || count === 1) {\n                break;\n            }\n\n            await sleep(CHECK_STATUS_RECOVER_TIMEOUT);\n            warn(\"Retrying transaction status check...\");\n            count--;\n        }\n\n        if (!statusObject) {\n            warn(\"Checking transaction status failed.\");\n            return reject(error);\n        } else if (isTxAccepted(statusObject)) {\n            return resolve(statusObject.tx_status);\n        } else if (isTxRejected(statusObject)) {\n            const adaptedError = adaptLog(JSON.stringify(statusObject, null, 4));\n            return reject(new Error(adaptedError));\n        }\n\n        await sleep(CHECK_STATUS_TIMEOUT);\n    }\n}\n\n/**\n * Reads the ABI from `abiPath`\n */\nfunction readAbi(abiPath: string): string {\n    return hash.formatSpaces(fs.readFileSync(abiPath).toString(\"ascii\").trim());\n}\n\n/**\n * Converts `rawAbi` to an object for lookup by name\n */\nfunction mapAbi(rawAbi: string): starknet.Abi {\n    const abiArray = json.parse(rawAbi);\n    const abi: starknet.Abi = {};\n    extractAbiEntries(abiArray, abi);\n    return abi;\n}\n\n/**\n * Recursively extract abi entries and populate the provided `abi` object.\n */\nfunction extractAbiEntries(abiArray: starknet.AbiEntry[], abi: starknet.Abi) {\n    for (const abiEntry of abiArray) {\n        if (\"items\" in abiEntry) {\n            extractAbiEntries(abiEntry.items, abi);\n        } else {\n            if (!abiEntry.name) {\n                const msg = `Abi entry has no name: ${abiEntry}`;\n                throw new StarknetPluginError(msg);\n            }\n            abi[abiEntry.name] = abiEntry;\n        }\n    }\n}\n\n/**\n * Add `signature` elements to to `starknetArgs`, if there are any.\n * @param signature array of transaction signature elements\n */\nfunction handleSignature(signature: Array<Numeric>): string[] {\n    if (signature) {\n        return signature.map((s) => s.toString());\n    }\n    return [];\n}\n\n/**\n * Extract events from the ABI.\n * @param abi the path where ABI is stored on disk.\n * @returns an object mapping ABI entry names with their values.\n */\nfunction extractEventSpecifications(abi: starknet.Abi) {\n    const events: starknet.EventAbi = {};\n    for (const abiEntryName in abi) {\n        if (abi[abiEntryName].type === \"event\") {\n            const event = <starknet.EventSpecification>abi[abiEntryName];\n            const encodedEventName = selector.getSelectorFromName(event.name);\n            events[encodedEventName] = event;\n        }\n    }\n    return events;\n}\n\nexport function parseFeeEstimation(raw: string): starknet.FeeEstimation {\n    const matchedAmount = raw.match(/^The estimated fee is: (\\d*) WEI \\(.* ETH\\)\\./m);\n    const matchedGasUsage = raw.match(/^Gas usage: (\\d*)/m);\n    const matchedGasPrice = raw.match(/^Gas price: (\\d*) WEI/m);\n    if (matchedAmount && matchedGasUsage && matchedGasPrice) {\n        return {\n            amount: BigInt(matchedAmount[1]),\n            unit: \"wei\",\n            gas_price: BigInt(matchedGasPrice[1]),\n            gas_usage: BigInt(matchedGasUsage[1])\n        };\n    }\n    throw new StarknetPluginError(`Cannot parse fee estimation response:\\n${raw}`);\n}\n\n/**\n * Returns a modified copy of the provided object with its blockNumber set to pending.\n * @param options the options object with a blockNumber key\n */\nfunction defaultToPendingBlock<T extends { blockNumber?: BlockNumber }>(options: T): T {\n    const adaptedOptions = copyWithBigint<T>(options);\n    if (adaptedOptions.blockNumber === undefined) {\n        // using || operator would not handle the zero case correctly\n        adaptedOptions.blockNumber = \"pending\";\n    }\n    return adaptedOptions;\n}\n\nexport interface DeclareOptions {\n    token?: string;\n    signature?: Array<Numeric>;\n    sender?: string; // address\n    nonce?: Numeric;\n    maxFee?: Numeric;\n    overhead?: number;\n    version?: number;\n}\n\nexport interface DeployOptions {\n    salt?: string;\n    unique?: boolean;\n    maxFee?: Numeric;\n    nonce?: Numeric;\n}\n\nexport interface DeployAccountOptions {\n    maxFee?: Numeric;\n    overhead?: number;\n}\n\nexport interface InvokeOptions {\n    signature?: Array<Numeric>;\n    nonce?: Numeric;\n    maxFee?: Numeric;\n    rawInput?: boolean;\n    overhead?: number;\n}\n\nexport interface CallOptions {\n    signature?: Array<Numeric>;\n    blockNumber?: BlockNumber;\n    nonce?: Numeric;\n    maxFee?: Numeric;\n    rawInput?: boolean;\n    rawOutput?: boolean;\n    token?: string;\n    salt?: string;\n    unique?: boolean;\n    sender?: string; // address\n}\n\nexport type EstimateFeeOptions = CallOptions;\n\nexport type InteractOptions = InvokeOptions | CallOptions | EstimateFeeOptions;\n\nexport type ContractInteractionFunction = (\n    functionName: string,\n    args?: StringMap,\n    options?: InteractOptions\n) => Promise<any>;\n\nexport type BlockNumber = number | \"pending\" | \"latest\";\n\nexport interface BlockIdentifier {\n    blockNumber?: BlockNumber;\n    blockHash?: string;\n}\n\nexport type SierraEntryPointsByType = {\n    CONSTRUCTOR: SierraContractEntryPointFields[];\n    EXTERNAL: SierraContractEntryPointFields[];\n    L1_HANDLER: SierraContractEntryPointFields[];\n};\n\nexport type SierraContractEntryPointFields = {\n    selector: string;\n    function_idx: number;\n};\n\nexport type NonceQueryOptions = BlockIdentifier;\n\nexport class StarknetContractFactory {\n    private hre: HardhatRuntimeEnvironment;\n    public abi: starknet.Abi;\n    public abiPath: string;\n    public abiRaw: string;\n    private constructorAbi: starknet.CairoFunction;\n    public metadataPath: string;\n    public casmPath: string;\n    private classHash: string;\n\n    constructor(config: StarknetContractFactoryConfig) {\n        this.hre = config.hre;\n        this.abiPath = config.abiPath;\n        this.abiRaw = readAbi(this.abiPath);\n        this.abi = mapAbi(this.abiRaw);\n        this.metadataPath = config.metadataPath;\n        this.casmPath = config.casmPath;\n\n        const constructorPredicate = this.resolveConstructorPredicate();\n        this.constructorAbi = findConstructor(this.abi, constructorPredicate);\n    }\n\n    private resolveConstructorPredicate(): (abiEntry: starknet.AbiEntry) => boolean {\n        if (!this.isCairo1()) {\n            return (abiEntry: starknet.AbiEntry): boolean => {\n                return abiEntry.type === \"constructor\";\n            };\n        }\n\n        const casmJson = JSON.parse(fs.readFileSync(this.casmPath, \"utf-8\"));\n        if (casmJson?.compiler_version.split(\".\")[0] === \"0\") {\n            const msg = \".CASM json should have been generated with a compiler version >= 1\";\n            throw new StarknetPluginError(msg);\n        }\n\n        const constructors = casmJson?.entry_points_by_type?.CONSTRUCTOR;\n        if (!constructors || constructors.length === 0) {\n            return () => false;\n        }\n\n        // Can be removed after new cairo release.\n        if (constructors.length > 1) {\n            const msg = \"There can be at most 1 constructor.\";\n            throw new StarknetPluginError(msg);\n        }\n\n        // Can be simplified once starkware fixes multiple constructor issue.\n        // Precomputed selector can be used if only 'constructor' name allowed\n        const constructorSelector = constructors[0].selector;\n        return (abiEntry: starknet.AbiEntry): boolean => {\n            return selector.getSelectorFromName(abiEntry.name) === constructorSelector;\n        };\n    }\n\n    /**\n     * Declare a contract class.\n     * @param options optional arguments to class declaration\n     * @returns transaction hash as a hex string\n     */\n    async declare(options: DeclareOptions = {}): Promise<string> {\n        const executed = await this.hre.starknetWrapper.declare({\n            contract: this.metadataPath,\n            maxFee: (options.maxFee || 0).toString(),\n            token: options.token,\n            signature: handleSignature(options.signature),\n            sender: options.sender,\n            nonce: options.nonce?.toString()\n        });\n        if (executed.statusCode) {\n            const msg = `Could not declare class: ${executed.stderr.toString()}`;\n            throw new StarknetPluginError(msg);\n        }\n\n        const executedOutput = executed.stdout.toString();\n        const txHash = extractTxHash(executedOutput);\n\n        return new Promise((resolve, reject) => {\n            iterativelyCheckStatus(\n                txHash,\n                this.hre.starknetWrapper,\n                () => resolve(txHash),\n                (error) => {\n                    reject(new StarknetPluginError(`Declare transaction ${txHash}: ${error}`));\n                }\n            );\n        });\n    }\n\n    handleConstructorArguments(constructorArguments: StringMap): string[] {\n        if (!this.constructorAbi) {\n            const argsProvided = Object.keys(constructorArguments || {}).length;\n            if (argsProvided) {\n                const msg = `No constructor arguments required but ${argsProvided} provided`;\n                throw new StarknetPluginError(msg);\n            }\n            return [];\n        }\n        return adaptInputUtil(\n            this.constructorAbi.name,\n            constructorArguments,\n            this.constructorAbi.inputs,\n            this.abi,\n            this.isCairo1()\n        );\n    }\n\n    /**\n     * Returns a contract instance with set address.\n     * No address validity checks are performed.\n     * @param address the address of a previously deployed contract\n     * @returns the contract instance at the provided address\n     */\n    getContractAt(address: string) {\n        if (!address) {\n            throw new StarknetPluginError(\"No address provided\");\n        }\n        if (typeof address !== \"string\" || !HEXADECIMAL_REGEX.test(address)) {\n            throw new StarknetPluginError(\n                `Address must be 0x-prefixed hex string. Got: \"${address}\".`\n            );\n        }\n        const contract = new StarknetContract({\n            abiPath: this.abiPath,\n            hre: this.hre,\n            isCairo1: this.isCairo1()\n        });\n        contract.address = address;\n        return contract;\n    }\n\n    getAbiPath() {\n        return this.abiPath;\n    }\n\n    isCairo1() {\n        return !!this.casmPath;\n    }\n\n    async getClassHash() {\n        const method = this.isCairo1() ? \"getSierraContractClassHash\" : \"getClassHash\";\n        this.classHash =\n            this.classHash ?? (await this.hre.starknetWrapper[method](this.metadataPath));\n        return this.classHash;\n    }\n}\n\nexport class StarknetContract {\n    private hre: HardhatRuntimeEnvironment;\n    protected abi: starknet.Abi;\n    protected abiPath: string;\n    protected abiRaw: string;\n    private isCairo1: boolean;\n    private eventsSpecifications: starknet.EventAbi;\n    private _address: string;\n    public deployTxHash: string;\n\n    constructor(config: StarknetContractConfig) {\n        this.hre = config.hre;\n        this.abiPath = config.abiPath;\n        this.abiRaw = readAbi(this.abiPath);\n        this.abi = mapAbi(this.abiRaw);\n        this.isCairo1 = config.isCairo1;\n        this.eventsSpecifications = extractEventSpecifications(this.abi);\n    }\n\n    get address(): string {\n        return this._address;\n    }\n\n    set address(address: string) {\n        this._address = address;\n        return;\n    }\n\n    get provider(): SequencerProvider {\n        return this.hre.starknetJs.provider;\n    }\n\n    /**\n     * Set a custom abi and abi path to the contract\n     * @param implementation the contract factory of the implementation to be set\n     */\n    setImplementation(implementation: StarknetContractFactory): void {\n        this.abi = implementation.abi;\n        this.abiPath = implementation.abiPath;\n    }\n\n    /**\n     * Invoke the function by name and optionally provide arguments in an array.\n     * For a usage example @see {@link call}\n     * @param functionName\n     * @param args arguments to Starknet contract function\n     * @options optional additions to invoking\n     * @returns a Promise that resolves when the status of the transaction is at least `PENDING`\n     */\n    async invoke(\n        functionName: string,\n        args?: StringMap,\n        options: InvokeOptions = {}\n    ): Promise<InvokeResponse> {\n        try {\n            const adaptedInput = options.rawInput\n                ? <string[]>args\n                : this.adaptInput(functionName, args);\n\n            const { transaction_hash: txHash } = await this.provider.invokeFunction(\n                {\n                    contractAddress: this.address,\n                    entrypoint: functionName,\n                    calldata: adaptedInput,\n                    signature: options.signature.map(String)\n                },\n                {\n                    nonce: options.nonce ?? (await this.provider.getNonceForAddress(this.address)),\n                    maxFee: options.maxFee,\n                    version: InteractChoice.INVOKE.transactionVersion\n                }\n            );\n\n            return new Promise<string>((resolve, reject) => {\n                iterativelyCheckStatus(\n                    txHash,\n                    this.hre.starknetWrapper,\n                    () => resolve(txHash),\n                    (error) => {\n                        reject(new StarknetPluginError(`Invoke transaction ${txHash}: ${error}`));\n                    }\n                );\n            });\n        } catch (error) {\n            if (!(error instanceof Error)) throw error;\n\n            throw new StarknetPluginError(error.message, error);\n        }\n    }\n\n    /**\n     * Call the function by name and optionally provide arguments in an array.\n     *\n     * E.g. If your contract has a function\n     * ```text\n     * func double_sum(x: felt, y: felt) -> (res: felt):\n     *     return (res=(x + y) * 2)\n     * end\n     * ```\n     * then you would call it like:\n     * ```typescript\n     * const contract = ...;\n     * const { res: sum } = await contract.call(\"double_sum\", { x: 2, y: 3 });\n     * console.log(sum);\n     * ```\n     * which would result in:\n     * ```text\n     * > 10n\n     * ```\n     *\n     * If options.rawOutput, the Promised object holds a property `response` with an array of strings.\n     *\n     * @param functionName\n     * @param args arguments to Starknet contract function\n     * @param options optional additions to calling\n     * @returns a Promise that resolves when the status of the transaction is at least `PENDING`\n     */\n    async call(\n        functionName: string,\n        args?: StringMap,\n        options: CallOptions = {}\n    ): Promise<StringMap> {\n        try {\n            const adaptedOptions = defaultToPendingBlock(options);\n            const adaptedInput = adaptedOptions.rawInput\n                ? <string[]>args\n                : this.adaptInput(functionName, args);\n\n            const { result } = await this.provider.callContract(\n                {\n                    contractAddress: this.address,\n                    entrypoint: functionName,\n                    calldata: adaptedInput\n                },\n                adaptedOptions.blockNumber\n            );\n            // align to legacy stdout output\n            const response = result.map(formatFelt).join(\" \");\n\n            if (options.rawOutput) {\n                return { response };\n            }\n            return this.adaptOutput(functionName, response);\n        } catch (error) {\n            if (!(error instanceof Error)) throw error;\n\n            throw new StarknetPluginError(error.message, error);\n        }\n    }\n\n    /**\n     * Computes L1-to-L2 message fee estimation\n     * @param {string} functionName Function name for entry point selector\n     * @param {StringMap} args - Arguments to Starknet contract function\n     * @returns Fee estimation\n     */\n    async estimateMessageFee(functionName: string, args: StringMap) {\n        // Check if functionName is annotated with @l1_handler\n        const func = <starknet.CairoFunction>this.abi[functionName];\n\n        if (!func?.type || func.type.toString() !== \"l1_handler\") {\n            throw new StarknetPluginError(\n                `Cannot estimate message fee on \"${functionName}\" - not an @l1_handler`\n            );\n        }\n        const adaptedInput = this.adaptInput(functionName, args);\n        // Remove value of from_address from the input array\n        const fromAddress = adaptedInput.shift();\n        return this.hre.starknetWrapper.estimateMessageFee(\n            functionName,\n            fromAddress,\n            this.address,\n            adaptedInput\n        );\n    }\n\n    /**\n     * Estimate the gas fee of executing `functionName` with `args`.\n     * @param functionName\n     * @param args arguments to Starknet contract function\n     * @param options optional execution specifications\n     * @returns an object containing the amount and the unit of the estimation\n     */\n    async estimateFee(\n        functionName: string,\n        args?: StringMap,\n        options: EstimateFeeOptions = {}\n    ): Promise<starknet.FeeEstimation> {\n        try {\n            const { nonce, maxFee, signature } = defaultToPendingBlock(options);\n            const result = await this.provider.getInvokeEstimateFee(\n                {\n                    contractAddress: this.address,\n                    calldata: args,\n                    signature: signature.map(String)\n                },\n                {\n                    nonce: nonce ?? (await this.provider.getNonceForAddress(this.address)),\n                    maxFee: maxFee,\n                    version: InteractChoice.ESTIMATE_FEE.transactionVersion\n                },\n                options.blockNumber\n            );\n\n            return {\n                amount: result.overall_fee,\n                unit: \"wei\",\n                gas_price: result.gas_price,\n                gas_usage: result.gas_consumed\n            };\n        } catch (error) {\n            if (!(error instanceof Error)) throw error;\n\n            throw new StarknetPluginError(error.message, error);\n        }\n    }\n\n    /**\n     * Returns the ABI of the whole contract.\n     * @returns contract ABI\n     */\n    getAbi(): starknet.Abi {\n        return this.abi;\n    }\n\n    /**\n     * Adapt structured `args` to unstructured array expected by e.g. Starknet CLI.\n     * @param functionName the name of the function to adapt\n     * @param args structured args\n     * @returns unstructured args\n     */\n    adaptInput(functionName: string, args?: StringMap): string[] {\n        const func = <starknet.CairoFunction>this.abi[functionName];\n        if (!func) {\n            const msg = `Function '${functionName}' doesn't exist on ${this.abiPath}.`;\n            throw new StarknetPluginError(msg);\n        }\n\n        if (Array.isArray(args)) {\n            throw new StarknetPluginError(\"Arguments should be passed in the form of an object.\");\n        }\n\n        return adaptInputUtil(functionName, args, func.inputs, this.abi, this.isCairo1);\n    }\n\n    /**\n     * Adapt unstructured `rawResult` to a structured object.\n     * @param functionName the name of the function that produced the output\n     * @param rawResult the function output as as unparsed space separated string\n     * @returns structured output\n     */\n    adaptOutput(functionName: string, rawResult: string) {\n        const func = <starknet.CairoFunction>this.abi[functionName];\n        return adaptOutputUtil(rawResult, func.outputs, this.abi);\n    }\n\n    /**\n     * Decode the events to a structured object with parameter names.\n     * Only decodes the events originating from this contract.\n     * @param events as received from the server.\n     * @returns structured object with parameter names.\n     * @throws if no events decoded\n     */\n    decodeEvents(events: starknet.Event[]): DecodedEvent[] {\n        const abi = json.parse(this.abiRaw);\n        const abiEvents = eventUtil.getAbiEvents(abi);\n        const abiStructs = CallData.getAbiStruct(abi);\n\n        const decodedEvents = eventUtil\n            .parseEvents(events, abiEvents, abiStructs, {})\n            .map((event) => {\n                const [name, data] = Object.entries(event)[0];\n                return { name, data };\n            });\n        return decodedEvents;\n    }\n}\n\nexport interface ContractClassConfig extends StarknetContractConfig {\n    sierraProgram: string;\n    contractClassVersion: string;\n    entryPointsByType: SierraEntryPointsByType;\n}\n\nexport class Cairo1ContractClass extends StarknetContract {\n    protected sierraProgram: string;\n    protected contractClassVersion: string;\n    protected entryPointsByType: SierraEntryPointsByType;\n\n    constructor(config: ContractClassConfig) {\n        super(config);\n\n        this.sierraProgram = config.sierraProgram;\n        this.contractClassVersion = config.contractClassVersion;\n        this.entryPointsByType = config.entryPointsByType;\n    }\n\n    /**\n     * Returns the compiled class.\n     * @returns object of a compiled contract class\n     */\n    getCompiledClass() {\n        return {\n            sierra_program: this.sierraProgram,\n            contract_class_version: this.contractClassVersion,\n            entry_points_by_type: this.entryPointsByType,\n            abi: this.abiRaw\n        };\n    }\n}\n\nexport interface ScarbConfig {\n    package: {\n        name: string;\n        version: string;\n    };\n    target: {\n        \"starknet-contract\": {\n            name?: string;\n            sierra?: boolean;\n            casm?: boolean;\n            \"casm-add-pythonic-hints\"?: boolean;\n            \"allowed-libfuncs\"?: boolean;\n            \"allowed-libfuncs-deny\"?: boolean;\n        }[];\n    };\n    dependencies: StringMap;\n}\n"
  },
  {
    "path": "src/types/starknet.ts",
    "content": "import { Block, HardhatNetworkConfig, NetworkConfig, Transaction } from \"hardhat/types\";\n\nimport { BlockIdentifier, NonceQueryOptions, StarknetContractFactory } from \".\";\nimport { Devnet } from \"./devnet\";\nimport { ArgentAccount, OpenZeppelinAccount } from \"../account\";\nimport { TransactionReceipt, TransactionTrace } from \"../starknet-types\";\n\nexport interface Starknet {\n    /**\n     * Fetches a compiled contract by name. E.g. if the contract is defined in MyContract.cairo,\n     * the provided string should be `MyContract`.\n     * @param name the case-sensitive contract name\n     * @returns a factory for generating instances of the desired contract\n     */\n    getContractFactory: (name: string) => Promise<StarknetContractFactory>;\n\n    /**\n     * Cairo and Starknet source files may contain short string literals,\n     * which are interpreted as numbers (felts) during Starknet runtime.\n     * Use this utility function to provide short string arguments to your contract functions.\n     *\n     * This function converts such a short string (max 31 characters) to its felt representation (wrapped in a `BigInt`).\n     * Only accepts standard ASCII characters, i.e. characters with charcode between 0 and 127, inclusive.\n     * @param input the input short string\n     * @returns the numeric equivalent of the input short string, wrapped in a `BigInt`\n     */\n    shortStringToBigInt: (convertibleString: string) => bigint;\n\n    /**\n     * Converts a BigInt to a string. The opposite of {@link shortStringToBigInt}.\n     * @param input the input BigInt\n     * @returns a string which is the result of converting a BigInt's hex value to its ASCII equivalent\n     */\n    bigIntToShortString: (convertibleBigInt: bigint) => string;\n\n    /**\n     * The selected starknet-network name.\n     * Present if the called task relies on `--starknet-network` or `starknet[\"network\"]` in the config object.\n     */\n    network: string;\n\n    /**\n     * The configuration object of the selected starknet-network.\n     */\n    networkConfig: HardhatNetworkConfig;\n\n    devnet: Devnet;\n\n    getTransaction: (txHash: string) => Promise<Transaction>;\n\n    getTransactionReceipt: (txHash: string) => Promise<TransactionReceipt>;\n\n    /**\n     * Returns execution information in a nested structure of calls.\n     * @param txHash the transaction hash\n     * @returns the transaction trace\n     */\n    getTransactionTrace: (txHash: string) => Promise<TransactionTrace>;\n\n    /**\n     * Returns an entire block and the transactions contained within it.\n     * @param identifier optional block identifier (by block number or hash). To query the latest block, remove the identifier.\n     * @returns a block object\n     */\n    getBlock: (identifier?: BlockIdentifier) => Promise<Block>;\n\n    /**\n     * Returns the nonce of the contract whose `address` is specified.\n     * @param address the contract address\n     * @param options optional arguments to specify the target\n     * @returns the nonce\n     */\n    getNonce: (address: string, options?: NonceQueryOptions) => Promise<number>;\n\n    /**\n     * Return balance of target contract whose `address` is specified.\n     * @param address of target contract\n     * @returns balance of target as BigInt\n     */\n    getBalance: (address: string) => Promise<bigint>;\n\n    OpenZeppelinAccount: typeof OpenZeppelinAccount;\n\n    ArgentAccount: typeof ArgentAccount;\n}\n\nexport type StarknetConfig = {\n    dockerizedVersion?: string;\n    venv?: string;\n    network?: string;\n    networkUrl?: string;\n    networkConfig?: NetworkConfig;\n    recompile?: boolean;\n    scarbCommand?: string;\n    cairo1BinDir?: string;\n    compilerVersion?: string;\n    requestTimeout?: number;\n};\n"
  },
  {
    "path": "src/utils/check-command-path.ts",
    "content": "import { StarknetPluginError } from \"../starknet-plugin-error\";\nimport fs from \"fs\";\n\nexport function checkCommandPath(commandPath: string): void {\n    if (!fs.existsSync(commandPath)) {\n        throw new StarknetPluginError(`Command ${commandPath} not found.`);\n    }\n}\n"
  },
  {
    "path": "src/utils/venv.ts",
    "content": "import path from \"path\";\nimport { checkCommandPath } from \"./check-command-path\";\n\nexport function normalizeVenvPath(venvPath: string): string {\n    if (venvPath[0] === \"~\") {\n        venvPath = path.join(process.env.HOME, venvPath.slice(1));\n    }\n\n    return path.normalize(venvPath);\n}\n\nexport function getPrefixedCommand(venvPath: string, command: string): string {\n    const prefixedCommand = path.join(venvPath, \"bin\", command);\n\n    checkCommandPath(prefixedCommand);\n\n    return prefixedCommand;\n}\n"
  },
  {
    "path": "src/utils.ts",
    "content": "import fs from \"fs\";\nimport { glob } from \"glob\";\nimport {\n    HardhatNetworkConfig,\n    HardhatRuntimeEnvironment,\n    HttpNetworkConfig,\n    NetworkConfig,\n    NetworksConfig,\n    ProjectPathsConfig,\n    VmLang\n} from \"hardhat/types\";\nimport path from \"path\";\nimport { json, stark, LegacyCompiledContract, hash } from \"starknet\";\n\nimport { handleInternalContractArtifacts } from \"./account-utils\";\nimport {\n    ABI_SUFFIX,\n    ALPHA_MAINNET,\n    ALPHA_MAINNET_INTERNALLY,\n    ALPHA_TESTNET,\n    ALPHA_TESTNET_INTERNALLY,\n    ALPHA_TESTNET_2,\n    ALPHA_TESTNET_2_INTERNALLY,\n    DEFAULT_DEVNET_CAIRO_VM,\n    DEFAULT_STARKNET_ACCOUNT_PATH,\n    INTEGRATED_DEVNET,\n    INTEGRATED_DEVNET_INTERNALLY,\n    StarknetChainId,\n    UDC_ADDRESS,\n    CAIRO_CLI_DEFAULT_DOCKER_IMAGE_TAG\n} from \"./constants\";\nimport { getContractFactoryUtil } from \"./extend-utils\";\nimport { StarknetPluginError } from \"./starknet-plugin-error\";\nimport { Abi, AbiEntry, CairoFunction } from \"./starknet-types\";\nimport { Cairo1ContractClass, ContractClassConfig, Numeric, StarknetContract } from \"./types\";\n\n/**\n * Replaces Starknet specific terminology with the terminology used in this plugin.\n *\n * @param msg the log message to be adapted\n * @returns the log message with adaptation replacements\n */\nexport function adaptLog(msg: string): string {\n    return msg\n        .replace(\"--network\", \"--starknet-network\")\n        .replace(\"gateway_url\", \"gateway-url\")\n        .replace(\"--account_contract\", \"--account-contract\")\n        .split(\".\\nTraceback (most recent call last)\")[0] // remove duplicated log\n        .replace(/\\\\n/g, \"\\n\"); // use newlines from json response for formatting\n}\n\nexport function getDefaultHttpNetworkConfig(\n    url: string,\n    verificationUrl: string,\n    verifiedUrl: string,\n    starknetChainId: StarknetChainId\n): HttpNetworkConfig {\n    return {\n        url,\n        verificationUrl,\n        verifiedUrl,\n        starknetChainId,\n        accounts: undefined,\n        gas: undefined,\n        gasMultiplier: undefined,\n        gasPrice: undefined,\n        httpHeaders: undefined,\n        timeout: undefined\n    };\n}\n\nexport function getDefaultHardhatNetworkConfig(url: string): HardhatNetworkConfig {\n    return {\n        url,\n        chainId: undefined,\n        gas: undefined,\n        gasPrice: undefined,\n        gasMultiplier: undefined,\n        hardfork: undefined,\n        mining: undefined,\n        accounts: undefined,\n        blockGasLimit: undefined,\n        minGasPrice: undefined,\n        throwOnTransactionFailures: undefined,\n        throwOnCallFailures: undefined,\n        allowUnlimitedContractSize: undefined,\n        initialDate: undefined,\n        loggingEnabled: undefined,\n        chains: undefined\n    };\n}\n\nexport async function traverseFiles(traversable: string, fileCriteria = \"*\") {\n    let paths: string[] = [];\n    if (fs.lstatSync(traversable).isDirectory()) {\n        paths = await glob(path.join(traversable, \"**\", fileCriteria));\n    } else {\n        paths.push(traversable);\n    }\n    const files = paths.filter((file) => fs.lstatSync(file).isFile());\n    return files;\n}\n\nexport function getArtifactPath(sourcePath: string, paths: ProjectPathsConfig): string {\n    const rootRegex = new RegExp(\"^\" + paths.root);\n    const suffix = sourcePath.replace(rootRegex, \"\");\n    return path.join(paths.starknetArtifacts, suffix);\n}\n\n/**\n * Adapts path relative to the root of the project and\n * tilde will be resolved to homedir\n * @param root string representing the root path set on hre or config\n * @param newPath string representing the path provided by the user\n * @returns adapted path\n */\nexport function adaptPath(root: string, newPath: string): string {\n    let adaptedPath = newPath;\n    if (newPath[0] === \"~\") {\n        adaptedPath = path.normalize(path.join(process.env.HOME, newPath.slice(1)));\n    } else if (!path.isAbsolute(newPath)) {\n        adaptedPath = path.normalize(path.join(root, newPath));\n    }\n    return adaptedPath;\n}\n\nexport function checkArtifactExists(artifactsPath: string): void {\n    if (!fs.existsSync(artifactsPath)) {\n        const msg = `Artifact expected to be at ${artifactsPath}, but not found. Consider recompiling your contracts.`;\n        throw new StarknetPluginError(msg);\n    }\n}\n\n/**\n * Extracts the network config from `hre.config.networks` according to `networkName`.\n * @param networkName The name of the network\n * @param networks Object holding network configs\n * @param origin Short string describing where/how `networkName` was specified\n * @returns Network config corresponding to `networkName`\n */\nexport function getNetwork<N extends NetworkConfig>(\n    networkName: string,\n    networks: NetworksConfig,\n    origin: string\n): N {\n    if (isMainnet(networkName)) {\n        networkName = ALPHA_MAINNET_INTERNALLY;\n    } else if (isTestnet(networkName)) {\n        networkName = ALPHA_TESTNET_INTERNALLY;\n    } else if (isTestnetTwo(networkName)) {\n        networkName = ALPHA_TESTNET_2_INTERNALLY;\n    } else if (isStarknetDevnet(networkName)) {\n        networkName = INTEGRATED_DEVNET_INTERNALLY;\n    }\n\n    const network = <N>networks[networkName];\n\n    if (!network) {\n        const available = Object.keys(networks).join(\", \");\n        const msg = `Invalid network provided in ${origin}: ${networkName}.\\nValid hardhat networks: ${available}`;\n        throw new StarknetPluginError(msg);\n    }\n\n    if (!network.url) {\n        throw new StarknetPluginError(`Cannot use network ${networkName}. No \"url\" specified.`);\n    }\n    network.starknetChainId ||= StarknetChainId.TESTNET;\n    network.vmLang ||= DEFAULT_DEVNET_CAIRO_VM as VmLang;\n\n    return network;\n}\n\nfunction isTestnet(networkName: string): boolean {\n    return networkName === ALPHA_TESTNET || networkName === ALPHA_TESTNET_INTERNALLY;\n}\n\nfunction isTestnetTwo(networkName: string): boolean {\n    return networkName === ALPHA_TESTNET_2 || networkName === ALPHA_TESTNET_2_INTERNALLY;\n}\n\nfunction isMainnet(networkName: string): boolean {\n    return networkName === ALPHA_MAINNET || networkName === ALPHA_MAINNET_INTERNALLY;\n}\n\nexport function isStarknetDevnet(networkName: string): boolean {\n    return networkName === INTEGRATED_DEVNET || networkName === INTEGRATED_DEVNET_INTERNALLY;\n}\n\nexport async function findPath(traversable: string, pathSegment: string) {\n    // Relative path to artifacts can be resolved now\n    const resolvedPath = path.resolve(path.join(traversable, pathSegment));\n    if (fs.existsSync(resolvedPath) && fs.lstatSync(resolvedPath).isFile()) {\n        return resolvedPath;\n    }\n\n    let files = await traverseFiles(traversable);\n    files = files.filter((f) => f.endsWith(pathSegment));\n    if (files.length == 0) {\n        return null;\n    } else if (files.length == 1) {\n        return files[0];\n    } else {\n        const msg =\n            \"More than one file was found because the path provided is ambiguous, please specify a relative path\";\n        throw new StarknetPluginError(msg);\n    }\n}\n\n/**\n *\n * @param accountPath Path where the account file is saved\n * @param hre The HardhatRuntimeEnvironment\n * @returns Absolute path where the account file is saved\n */\nexport function getAccountPath(accountPath: string, hre: HardhatRuntimeEnvironment) {\n    let accountDir = accountPath || DEFAULT_STARKNET_ACCOUNT_PATH;\n\n    // Adapt path to be absolute\n    if (accountDir[0] === \"~\") {\n        accountDir = path.normalize(path.join(process.env.HOME, accountDir.slice(1)));\n    } else if (!path.isAbsolute(accountDir)) {\n        const root = hre.config.paths.root;\n        accountDir = path.normalize(path.join(root, accountDir));\n    }\n    return accountDir;\n}\n\nexport function copyWithBigint<T>(object: unknown): T {\n    return JSON.parse(\n        JSON.stringify(object, (_key, value) =>\n            typeof value === \"bigint\" ? value.toString() : value\n        )\n    );\n}\n\nfunction getImageTagByArch(tag: string): string {\n    // Check CPU architecture\n    const arch = process.arch;\n    if (arch === \"arm64\" && !tag.endsWith(\"-arm\") && !tag.endsWith(\"-arm-seed0\")) {\n        tag = `${tag}-arm`;\n    }\n    return tag;\n}\n\nexport function getCairoCliImageTagByArch(tag = CAIRO_CLI_DEFAULT_DOCKER_IMAGE_TAG): string {\n    return getImageTagByArch(tag);\n}\n\nexport function getDevnetImageTagByArch(tag: string): string {\n    return getImageTagByArch(tag);\n}\n\nexport function sleep(ms: number) {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Log a yellow message to STDERR.\n * @param message\n */\nexport function warn(message: string): void {\n    console.warn(\"\\x1b[33m%s\\x1b[0m\", message);\n}\n\n/**\n * Converts BigInt to 0x-prefixed hex string\n * @param numeric\n */\nexport function numericToHexString(numeric: Numeric): string {\n    return \"0x\" + BigInt(numeric).toString(16);\n}\n\n/**\n * @returns random salt\n */\nexport function generateRandomSalt(): string {\n    return stark.randomAddress();\n}\n\n/**\n * Global handler of UDC\n */\nexport class UDC {\n    private static instance: StarknetContract;\n\n    /**\n     * Returns the UDC singleton.\n     */\n    static async getInstance() {\n        if (!UDC.instance) {\n            const hre = await import(\"hardhat\");\n            const contractPath = handleInternalContractArtifacts(\n                \"OpenZeppelinUDC\", // dir name\n                \"UDC\", // file name\n                \"0.5.0\", // version\n                hre\n            );\n            const udcContractFactory = await getContractFactoryUtil(hre, contractPath);\n            UDC.instance = udcContractFactory.getContractAt(UDC_ADDRESS);\n        }\n        return UDC.instance;\n    }\n}\n\nexport function readContract(contractPath: string) {\n    const parsedContract = json.parse(\n        fs.readFileSync(contractPath).toString(\"ascii\")\n    ) as LegacyCompiledContract;\n    return {\n        ...parsedContract,\n        program: stark.compressProgram(parsedContract.program)\n    };\n}\n\nexport function readCairo1Contract(contractPath: string) {\n    const parsedContract = json.parse(fs.readFileSync(contractPath).toString(\"ascii\"));\n    const { contract_class_version, entry_points_by_type, sierra_program } = parsedContract;\n\n    const contract = new Cairo1ContractClass({\n        abiPath: path.join(\n            path.dirname(contractPath),\n            `${path.parse(contractPath).name}${ABI_SUFFIX}`\n        ),\n        sierraProgram: stark.compressProgram(hash.formatSpaces(json.stringify(sierra_program))),\n        entryPointsByType: entry_points_by_type,\n        contractClassVersion: contract_class_version\n    } as ContractClassConfig);\n\n    return contract;\n}\n\nexport function bnToDecimalStringArray(rawCalldata: bigint[]) {\n    return rawCalldata.map((x) => x.toString(10));\n}\n\nexport function estimatedFeeToMaxFee(amount?: bigint, overhead = 0.5) {\n    overhead = Math.round((1 + overhead) * 100);\n    return (amount * BigInt(overhead)) / BigInt(100);\n}\n\nexport function findConstructor(abi: Abi, predicate: (entry: AbiEntry) => boolean): CairoFunction {\n    for (const abiEntryName in abi) {\n        const abiEntry = abi[abiEntryName];\n        if (predicate(abiEntry)) {\n            return <CairoFunction>abiEntry;\n        }\n    }\n\n    return undefined;\n}\n"
  },
  {
    "path": "test/configuration-tests/with-account-compilation-option/check.ts",
    "content": "import { copyFileSync } from \"fs\";\nimport path from \"path\";\nimport { hardhatStarknetCompileDeprecated } from \"../../utils/cli-functions\";\nimport { assertContains } from \"../../utils/utils\";\n\nconst contractName = \"dummy_account.cairo\";\nconst contractPath = path.join(\"contracts\", contractName);\n\nconst expected = \"Use the --account-contract flag to compile an account contract.\";\n\nconsole.log(\"Testing rejection of compilation without the account flag\");\ncopyFileSync(path.join(__dirname, contractName), contractPath);\nconst execution = hardhatStarknetCompileDeprecated(contractPath.split(\" \"), true);\nassertContains(execution.stderr, expected);\nconsole.log(\"Success\");\nhardhatStarknetCompileDeprecated(`${contractPath} --account-contract`.split(\" \"));\n"
  },
  {
    "path": "test/configuration-tests/with-account-compilation-option/dummy_account.cairo",
    "content": "%lang starknet\n\n@external\nfunc __execute__() {\n    return ();\n}\n\n@external\nfunc __validate_declare__(class_hash: felt) {\n    return ();\n}\n\n@external\nfunc __validate__() {\n    return ();\n}\n"
  },
  {
    "path": "test/configuration-tests/with-account-compilation-option/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-account-compilation-option/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-artifacts-path/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { assertExistence, rmrfSync } from \"../../utils/utils\";\n\nhardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\nassertExistence(\"my-starknet-artifacts/contracts/contract.cairo/\");\nassertExistence(\"starknet-artifacts\", false);\n\nhardhatStarknetTest([\"test/contract-factory-creation.test.ts\", \"--no-compile\"]);\n\nrmrfSync(\"my-starknet-artifacts\");\n"
  },
  {
    "path": "test/configuration-tests/with-artifacts-path/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    paths: {\n        starknetArtifacts: \"my-starknet-artifacts\"\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-artifacts-path/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-cairo-path/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated(\"contracts/contract.cairo\".split(\" \"));\n"
  },
  {
    "path": "test/configuration-tests/with-cairo-path/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    paths: {\n        cairoPaths: [\"./new-sources\", \"~/another-source\"]\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-cairo-path/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-cairo-version/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated(\"contracts/contract.cairo\".split(\" \"));\nhardhatStarknetTest([\"test/contract-factory-creation.test.ts\", \"--no-compile\"]);\n"
  },
  {
    "path": "test/configuration-tests/with-cairo-version/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        dockerizedVersion: process.env.CAIRO_LANG,\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-cairo-version/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-cairo1-compiler-dir/check.ts",
    "content": "import { hardhatStarknetCompile } from \"../../utils/cli-functions\";\nimport { assertContains, assertCompilationArtifactsExist, ensureEnvVar } from \"../../utils/utils\";\n\nensureEnvVar(\"CAIRO_1_COMPILER_DIR\");\nhardhatStarknetCompile([\"cairo1-contracts/contract1.cairo\", \"--single-file\"]);\nassertCompilationArtifactsExist(\"starknet-artifacts/cairo1-contracts/contract1.cairo\", \"contract1\");\n\n// Assert cairo0 compilation failure\nconst execution = hardhatStarknetCompile([\"contracts/contract.cairo\", \"--single-file\"], true);\nassertContains(execution.stderr, \"error: Skipped tokens.\");\n"
  },
  {
    "path": "test/configuration-tests/with-cairo1-compiler-dir/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"active\",\n        network: process.env.NETWORK,\n        cairo1BinDir: process.env.CAIRO_1_COMPILER_DIR\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-cairo1-compiler-dir/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-cairo1-compiler-dir-omitted/check.ts",
    "content": "import { hardhatStarknetCompile } from \"../../utils/cli-functions\";\nimport { assertCompilationArtifactsExist } from \"../../utils/utils\";\n\nhardhatStarknetCompile([\"cairo1-contracts/contract1.cairo\", \"--single-file\"]);\nassertCompilationArtifactsExist(\"starknet-artifacts/cairo1-contracts/contract1.cairo\", \"contract1\");\n"
  },
  {
    "path": "test/configuration-tests/with-cairo1-compiler-dir-omitted/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"active\",\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-cairo1-compiler-dir-omitted/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-cli-network/check.ts",
    "content": "import { hardhatStarknetRun, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { assertContains } from \"../../utils/utils\";\n\n// Test how --starknet-network can be specified through CLI while at the same time\n// overriding hardhat.config specification.\n// It would be sufficient to run this test just once and not for both alpha and devnet.\n// Only tests if --starknet-network is accepted, not if the correct network is targeted.\n\n// currently not supported for hardhat run\nconst runWithCliNetwork = hardhatStarknetRun(\n    \"--no-compile --starknet-network devnet scripts/compile-contract.ts\".split(\" \"),\n    true\n);\nassertContains(\n    runWithCliNetwork.stderr,\n    \"\\\"--starknet-network\\\" with \\\"hardhat run\\\" currently does not have effect\"\n);\n\n// compile to have artifacts for hardhat test\nhardhatStarknetRun(\"--no-compile scripts/compile-contract.ts\".split(\" \"));\n\nhardhatStarknetTest(\"--no-compile --starknet-network devnet test/quick-test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/configuration-tests/with-cli-network/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"active\",\n        cairo1BinDir: process.env.CAIRO_1_COMPILER_DIR,\n        network: \"alphaGoerli2\"\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-cli-network/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-compiler-version/check.ts",
    "content": "import fs from \"fs\";\nimport path from \"path\";\nimport { hardhatStarknetCompile } from \"../../utils/cli-functions\";\nimport {\n    assertCompilationArtifactsExist,\n    assertContains,\n    assertEqual,\n    assertGreater,\n    ensureEnvVar,\n    rmrfSync\n} from \"../../utils/utils\";\nimport { HIDDEN_PLUGIN_COMPILER_SUBDIR, HIDDEN_PLUGIN_DIR } from \"../../../src/constants\";\nimport { CAIRO_COMPILER as validCompilerVersion } from \"../../../config.json\";\n\n/* Helper functions and constants */\n\nfunction compile() {\n    hardhatStarknetCompile([\"cairo1-contracts/contract1.cairo\", \"--single-file\"]);\n}\n\nfunction assertArtifacts() {\n    assertCompilationArtifactsExist(\n        \"starknet-artifacts/cairo1-contracts/contract1.cairo\",\n        \"contract1\"\n    );\n}\n\nfunction invalidate(invalidablePath: string) {\n    fs.writeFileSync(invalidablePath, \"garbage\");\n}\n\nconst EXPECTED_COMPILER_BIN = path.join(\n    ensureEnvVar(\"HOME\"),\n    HIDDEN_PLUGIN_DIR,\n    HIDDEN_PLUGIN_COMPILER_SUBDIR,\n    validCompilerVersion,\n    \"cairo\",\n    \"bin\"\n);\nconst EXPECTED_COMPILER_PATH = path.join(EXPECTED_COMPILER_BIN, \"starknet-compile\");\nconst EXPECTED_SIERRA_COMPILER_PATH = path.join(EXPECTED_COMPILER_BIN, \"starknet-sierra-compile\");\n\n/* Testing procedure */\n\n// clear before any tests, just in case\nrmrfSync(EXPECTED_COMPILER_BIN);\n\n// Test case - invalid compiler version\nconst nonExistentVersion = \"1.123.1\"; // doesn't exist and shouldn't ever exist\nprocess.env.CAIRO_COMPILER = nonExistentVersion;\nconst invalidExecution = hardhatStarknetCompile(\n    [\"cairo1-contracts/contract1.cairo\", \"--single-file\"],\n    true // expectFailure\n);\nassertContains(\n    invalidExecution.stderr,\n    `Could not download cairo ${nonExistentVersion}. Make sure that it exists.`\n);\n\n// Test case - implicitly download compiler and compile\nprocess.env.CAIRO_COMPILER = validCompilerVersion;\ncompile();\n// assert compiler downloaded and artifacts present\nconst compilerStatInitial = fs.statSync(EXPECTED_COMPILER_PATH);\nassertArtifacts();\n\n// Test case - invalidate compiler to cause redownload\ninvalidate(EXPECTED_COMPILER_PATH);\ncompile();\n// assert compiler redownloaded and artifacts present\nconst compilerStatRedownloaded = fs.statSync(EXPECTED_COMPILER_PATH);\nassertGreater(compilerStatRedownloaded.ctime, compilerStatInitial.ctime);\nassertArtifacts();\n\n// Test case - invalidate sierra compiler to cause redownload\ninvalidate(EXPECTED_SIERRA_COMPILER_PATH);\ncompile();\n// assert compiler redownloaded and artifacts present\nconst compilerStatRedownloaded2 = fs.statSync(EXPECTED_COMPILER_PATH);\nassertGreater(compilerStatRedownloaded2.ctime, compilerStatRedownloaded.ctime);\nassertArtifacts();\n\n// Test case - compile again - no compiler change expected\ncompile();\n// we make no assertions about the age of contract artifacts as that is related to\n// the recompilation functionality (not the responsibility of this test)\nconst compilerStatFinal = fs.statSync(EXPECTED_COMPILER_PATH);\nassertEqual(compilerStatFinal.ctime.getTime(), compilerStatRedownloaded2.ctime.getTime());\nassertArtifacts();\n"
  },
  {
    "path": "test/configuration-tests/with-compiler-version/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"active\",\n        compilerVersion: process.env.CAIRO_COMPILER\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-compiler-version/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-disable-hint-compilation-option/check.ts",
    "content": "import { copyFileSync } from \"fs\";\nimport path from \"path\";\nimport { hardhatStarknetCompileDeprecated } from \"../../utils/cli-functions\";\nimport { assertContains } from \"../../utils/utils\";\n\nconst contractName = \"contract_with_unwhitelisted_hints.cairo\";\nconst contractPath = path.join(\"contracts\", contractName);\n\ncopyFileSync(path.join(__dirname, contractName), contractPath);\n\nconst expected = `Hint is not whitelisted.\nThis may indicate that this library function cannot be used in StarkNet contracts.`;\n\nconsole.log(\"Testing rejection of compilation without the --disable-hint-validation flag\");\nconst execution = hardhatStarknetCompileDeprecated([contractPath], true);\nassertContains(execution.stderr, expected);\nconsole.log(\"Success\");\n\nhardhatStarknetCompileDeprecated(`${contractPath} --disable-hint-validation`.split(\" \"));\n"
  },
  {
    "path": "test/configuration-tests/with-disable-hint-compilation-option/contract_with_unwhitelisted_hints.cairo",
    "content": "// Declare this file as a Starknet contract.\n%lang starknet\n\nfrom starkware.cairo.common.cairo_builtins import HashBuiltin\nfrom starkware.cairo.common.uint256 import Uint256, uint256_sub, uint256_signed_nn\n\n// Define a storage variable.\n@storage_var\nfunc balance() -> (res: felt) {\n}\n\n// Increases the balance by the given amount.\n@external\nfunc increase_balance{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}() {\n    let a = Uint256(1, 0);\n    let b = Uint256(2, 0);\n    let (c) = uint256_sub(a, b);\n    let (d) = uint256_signed_nn(c);\n    %{ print(f\"{ids.d=}\") %}\n    return ();\n}\n\n// Returns the current balance.\n@view\nfunc get_balance{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}() -> (res: felt) {\n    let (res) = balance.read();\n    return (res,);\n}\n"
  },
  {
    "path": "test/configuration-tests/with-disable-hint-compilation-option/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-disable-hint-compilation-option/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-networks/check.ts",
    "content": "import { assertContains } from \"../../utils/utils\";\nimport path from \"path\";\nimport { readFileSync } from \"fs\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n\nconst invalidNetwork = \"foo\";\nconst expected = `Error in plugin Starknet: Invalid network provided in starknet.network in hardhat.config: ${invalidNetwork}.`;\nconst prefix = __dirname;\n\nconsole.log(\"Testing invalid CLI network\");\nlet execution = hardhatStarknetTest(\n    [\n        \"test/contract-factory-creation.test.ts\",\n        \"--no-compile\",\n        \"--starknet-network\",\n        invalidNetwork\n    ],\n    true\n);\nassertContains(\n    execution.stderr,\n    readFileSync(path.join(prefix, \"invalid-cli-network.txt\")).toString()\n);\nconsole.log(\"Success\");\n\nconsole.log(\"Testing no mocha network\");\nprocess.env.NETWORK = \"\";\nhardhatStarknetTest([\"--no-compile\", \"test/contract-factory-creation.test.ts\"]);\nconsole.log(\"Success\");\n\nconsole.log(\"Testing invalid config network\");\nprocess.env.NETWORK = invalidNetwork;\nexecution = hardhatStarknetTest([\"--no-compile\", \"test/contract-factory-creation.test.ts\"], true);\nassertContains(execution.stderr, expected);\nconsole.log(\"Success\");\n\nconsole.log(\"Testing deployment with alpha-goerli2 config network is temporarily disabled.\");\n// console.log(\"Testing with alpha-goerli2 config network\");\n// process.env.NETWORK = \"alpha-goerli2\";\n// execution = hardhatStarknetTest(\n//    [\"test/contract-factory-creation.test.ts\", \"--no-compile\", \"--starknet-network\", \"alpha-goerli2\"]\n// );\n"
  },
  {
    "path": "test/configuration-tests/with-networks/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        },\n        hardhat: {}\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-networks/invalid-cli-network.txt",
    "content": "Error in plugin Starknet: Invalid network provided in --starknet-network: foo.\nValid hardhat networks: hardhat, localhost, devnet, alphaGoerli, alphaGoerli2, alphaMainnet, integratedDevnet\n"
  },
  {
    "path": "test/configuration-tests/with-networks/invalid-config-network.txt",
    "content": "Error in plugin Starknet: Invalid network provided in starknet.network in hardhat.config: foo.\nValid hardhat networks: hardhat, localhost, devnet, alphaGoerli, alphaGoerli2, alphaMainnet, integratedDevnet\n\nFor more info run Hardhat with --show-stack-traces\n"
  },
  {
    "path": "test/configuration-tests/with-networks/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-networks/without-starknet-network.txt",
    "content": "Error in plugin Starknet: No starknet-network or gateway-url provided.\n"
  },
  {
    "path": "test/configuration-tests/with-request-timeout-1ms/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { assertContains } from \"../../utils/utils\";\n\nconst execution = hardhatStarknetTest(\"--no-compile test/get-balance.test.ts\".split(\" \"), true);\nassertContains(execution.stdout, \"AxiosError: timeout of 1ms exceeded\");\n"
  },
  {
    "path": "test/configuration-tests/with-request-timeout-1ms/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        requestTimeout: 1\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\",\n            stdout: \"STDOUT\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-request-timeout-1ms/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-request-timeout-default/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetTest(\"--no-compile test/get-balance.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/configuration-tests/with-request-timeout-default/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-request-timeout-default/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom/check.ts",
    "content": "import { hardhatStarknetBuild } from \"../../utils/cli-functions\";\nimport { scarbAssertions } from \"../../utils/scarb-utils\";\nimport { assertContains } from \"../../utils/utils\";\n\nconst projectName = \"cairo1_sample_project\";\nconst buildResult = hardhatStarknetBuild([projectName]);\nassertContains(buildResult.stdout, \"Starknet plugin using custom Scarb\");\n\nscarbAssertions(projectName);\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        scarbCommand: `${process.env.HOME}/.local/bin/scarb`\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-cli/check.ts",
    "content": "import { hardhatStarknetBuild } from \"../../utils/cli-functions\";\nimport { scarbAssertions } from \"../../utils/scarb-utils\";\nimport { assertContains } from \"../../utils/utils\";\n\nconst projectName = \"cairo1_sample_project\";\n// override the default\nconst customCommand = `${process.env.HOME}/.local/bin/scarb`;\nconst buildResult = hardhatStarknetBuild([projectName, \"--scarb-command\", customCommand]);\nassertContains(buildResult.stdout, \"Starknet plugin using custom Scarb\");\n\nscarbAssertions(projectName);\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-cli/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        scarbCommand: `${process.env.HOME}/.local/bin/scarb`\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-cli/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-cairo/check.ts",
    "content": "import { hardhatStarknetBuild } from \"../../utils/cli-functions\";\nimport { assertContains } from \"../../utils/utils\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\n\nconst projectName = \"cairo1_sample_project\";\n\n// override a cairo source file with an invalid one\nconst invalidConfigFilePath = path.join(__dirname, \"multiple_contracts_invalid.cairo\");\nfs.copyFileSync(invalidConfigFilePath, path.join(projectName, \"src\", \"multiple_contracts.cairo\"));\n\n// expect failure\nconsole.log(\"Expecting rejection if invalid cairo source file\");\nconst buildResult = hardhatStarknetBuild([projectName], true);\nassertContains(buildResult.stderr, \"Failed building of 1 project\");\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-cairo/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        scarbCommand: `${process.env.HOME}/.local/bin/scarb`\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-cairo/multiple_contracts_invalid.cairo",
    "content": "// an invalid contract by virtue of invalid spaces in the mod name\n\n#[contract]\nmod First       Contract {\n    #[view]\n    fn greet() -> felt252 {\n        return 'Hello from First';\n    }\n}\n\n#[contract]\nmod AnotherContract {\n    #[view]\n    fn get_balance() -> felt252 {\n        return 'Hello from Another';\n    }\n}\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-cairo/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-config/Scarb-invalid.toml",
    "content": "[package]\nname = \"sample_package_name\"\nversion = \"0.1.0\"\n\n[[target.starknet-contract]]\n# Enable Sierra codegen.\nsierra = true\n\n# Enable CASM codegen.\ncasm = false\n\n[dependencies]\nstarknet = \">=1.1.0\"\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-config/check.ts",
    "content": "import { hardhatStarknetBuild } from \"../../utils/cli-functions\";\nimport { scarbArtifactsAssertion } from \"../../utils/scarb-utils\";\nimport { assertContains } from \"../../utils/utils\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\n\nconst projectName = \"cairo1_sample_project\";\n\n// override the config file with an invalid one - doesn't specify casm generation\nconst invalidConfigFilePath = path.join(__dirname, \"Scarb-invalid.toml\");\nfs.copyFileSync(invalidConfigFilePath, path.join(projectName, \"Scarb.toml\"));\n\n// expect failure\nconsole.log(\"Expecting rejection if invalid config file\");\nconst buildResult = hardhatStarknetBuild([projectName], true);\nassertContains(buildResult.stderr, \"Invalid config file\");\n\n// expect to pass if skipping validation\nconsole.log(\"Expecting success if skipping validation\");\nhardhatStarknetBuild([projectName, \"--skip-validate\"], false);\nscarbArtifactsAssertion(projectName, undefined, undefined, [\".json\", \"_abi.json\"]);\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-config/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        scarbCommand: `${process.env.HOME}/.local/bin/scarb`\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-invalid-config/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-multiple-projects/check.ts",
    "content": "import { hardhatStarknetBuild } from \"../../utils/cli-functions\";\nimport { scarbArtifactsAssertion } from \"../../utils/scarb-utils\";\nimport { assertContains } from \"../../utils/utils\";\nimport * as fs from \"fs\";\n\n// generate another project - a copy of the sample one\nconst projectName = \"cairo1_sample_project\";\nconst copiedProjectName = \"cairo1_copied_project\";\n\nfs.cpSync(projectName, copiedProjectName, { recursive: true });\n\nconst buildResult = hardhatStarknetBuild([projectName, copiedProjectName]);\nassertContains(buildResult.stdout, \"Starknet plugin using custom Scarb\");\n\nscarbArtifactsAssertion(projectName);\nscarbArtifactsAssertion(copiedProjectName);\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-multiple-projects/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        scarbCommand: `${process.env.HOME}/.local/bin/scarb`\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-custom-multiple-projects/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-dockerized/check.ts",
    "content": "import { hardhatStarknetBuild } from \"../../utils/cli-functions\";\nimport { assertContains } from \"../../utils/utils\";\n\nconst projectName = \"cairo1_sample_project\";\nconst buildResult = hardhatStarknetBuild([projectName], true);\nconsole.log(\"Temporarily expecting that dockerized scarb cannot be used\");\nassertContains(buildResult.stderr, \"Dockerized Scarb is not yet supported\");\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-dockerized/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-scarb-dockerized/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/configuration-tests/with-sources-path/check.ts",
    "content": "import { renameSync } from \"fs\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { assertExistence } from \"../../utils/utils\";\n\nrenameSync(\"contracts\", \"my-starknet-sources\");\n\n// compile without specifying the path to see if the default path is updated to the new value\nhardhatStarknetCompileDeprecated([]);\n\nassertExistence(\"starknet-artifacts/my-starknet-sources\");\nassertExistence(\"starknet-artifacts/contracts\", false);\n\nhardhatStarknetTest([\"test/contract-factory-creation.test.ts\", \"--no-compile\"]);\n"
  },
  {
    "path": "test/configuration-tests/with-sources-path/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    paths: {\n        starknetSources: \"my-starknet-sources\"\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/configuration-tests/with-sources-path/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/constants/constants.ts",
    "content": "export const HOST = \"127.0.0.1\";\nexport const PORT = \"5050\";\nexport const NODE_PORT = \"8545\";\nexport const DEVNET_URL = `http://${HOST}:${PORT}`;\n"
  },
  {
    "path": "test/general-tests/account-test/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated(\"contracts/contract.cairo contracts/util.cairo\".split(\" \"));\nhardhatStarknetTest(\"--no-compile test/oz-account-test.ts\".split(\" \"));\n// _TODO: skipped because required setup is not supported, see ./hardhat.config.ts\n// hardhatStarknetTest(\"--no-compile test/argent-account-test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/account-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            url: \"http://127.0.0.1:5050\",\n            // testing with fork because alpha-goerli has the needed argent account contracts declared\n            // using integrated-devnet (in network.json) because spawning devnet is currently out of reach for individual tests\n            // args: [\"--seed\", \"42\", \"--fork-network\", \"alpha-goerli\"]\n\n            // _TODO: forking is currently not supported because testnet is at cairo-lang v0.12.2\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/account-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/amarna/check.ts",
    "content": "import * as fs from \"fs\";\nimport { spawnSync } from \"child_process\";\nimport { assertExistence } from \"../../utils/utils\";\n\n// Cleanup old sarif file if exists\nfs.existsSync(\"./out.sarif\") && fs.unlinkSync(\"./out.sarif\");\n\nconsole.log(\"Running amarna\");\n\nconst output = spawnSync(\"npx\", [\"hardhat\", \"amarna\"], { encoding: \"utf-8\" });\noutput.stdout && console.log(output.stdout);\noutput.stderr && console.warn(output.stderr);\n\nassertExistence(\"./out.sarif\");\nfs.unlinkSync(\"./out.sarif\"); // Cleanup out.sarif after the test\n"
  },
  {
    "path": "test/general-tests/amarna/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/amarna/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/cairo0-constructor-test/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated(\n    \"contracts/contract.cairo contracts/simple_storage.cairo contracts/empty_constructor.cairo\".split(\n        \" \"\n    )\n);\nhardhatStarknetTest(\"--no-compile test/cairo0-constructor.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/cairo0-constructor-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: \"devnet\"\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/cairo0-constructor-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/contract-test/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated(\"contracts/contract.cairo contracts/util.cairo\".split(\" \"));\nhardhatStarknetTest(\"--no-compile test/contract.test.ts\".split(\" \"));\nhardhatStarknetTest(\"--no-compile test/contract-factory.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/contract-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/contract-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/declare-test/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated(\"contracts/contract.cairo contracts/deployer.cairo\".split(\" \"));\nhardhatStarknetTest(\"--no-compile test/declare-deploy.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/declare-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/declare-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"alphaGoerli2\": true,\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/declare-v2-test/check.ts",
    "content": "import { hardhatStarknetCompile, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { ensureEnvVar } from \"../../utils/utils\";\n\nensureEnvVar(\"CAIRO_1_COMPILER_DIR\");\nhardhatStarknetCompile([\n    \"cairo1-contracts/contract1.cairo\",\n    \"--add-pythonic-hints\",\n    \"--single-file\"\n]);\nhardhatStarknetTest([\"--no-compile test/cairo1/declare-v2.test.ts\"]);\n"
  },
  {
    "path": "test/general-tests/declare-v2-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"active\",\n        network: process.env.NETWORK,\n        cairo1BinDir: process.env.CAIRO_1_COMPILER_DIR\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/declare-v2-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/decode-event-test/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([\"contracts/events.cairo\"]);\nhardhatStarknetTest(\"--no-compile test/decode-events.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/decode-event-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/decode-event-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/decode-event-v2-test/check.ts",
    "content": "import { hardhatStarknetCompile, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { ensureEnvVar } from \"../../utils/utils\";\n\nensureEnvVar(\"CAIRO_1_COMPILER_DIR\");\nhardhatStarknetCompile([\"cairo1-contracts/events.cairo\", \"--add-pythonic-hints\", \"--single-file\"]);\nhardhatStarknetTest([\"--no-compile test/cairo1/decode-events.test.ts\"]);\n"
  },
  {
    "path": "test/general-tests/decode-event-v2-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"active\",\n        network: process.env.NETWORK,\n        cairo1BinDir: process.env.CAIRO_1_COMPILER_DIR\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/decode-event-v2-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/devnet-block-time/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetTest(\"--no-compile test/devnet-time-test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/devnet-block-time/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/devnet-block-time/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/devnet-create-block/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetTest(\"--no-compile test/devnet-create-block.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/devnet-create-block/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/devnet-create-block/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/devnet-dump-and-load/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\nhardhatStarknetTest(\"--no-compile test/devnet-dump-and-load.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/devnet-dump-and-load/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/devnet-dump-and-load/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/devnet-mint/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetTest(\"--no-compile test/devnet-mint.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/devnet-mint/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/devnet-mint/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/devnet-restart/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\nhardhatStarknetTest(\"--no-compile test/devnet-restart.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/devnet-restart/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/devnet-restart/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/expect-error-on-compile/check.ts",
    "content": "import { copyFileSync } from \"fs\";\nimport path from \"path\";\nimport { hardhatStarknetCompileDeprecated } from \"../../utils/cli-functions\";\nimport { assertContains } from \"../../utils/utils\";\n\nconst contractName = \"invalid_contract.cairo\";\nconst contractPath = path.join(\"contracts\", contractName);\n\ncopyFileSync(path.join(__dirname, contractName), contractPath);\n\nconsole.log(\"Testing rejection of compilation with correct message\");\nconst compileResult = hardhatStarknetCompileDeprecated([contractPath], true);\nassertContains(\n    compileResult.stderr,\n    \"Unknown identifier 'openzeppelin.token.erc721.library.ERC721.nonexistent_method'\"\n);\nconsole.log(\"Success\");\n"
  },
  {
    "path": "test/general-tests/expect-error-on-compile/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/expect-error-on-compile/invalid_contract.cairo",
    "content": "// unknown identifier\n%lang starknet\n%builtins pedersen range_check\n\nfrom starkware.cairo.common.cairo_builtins import HashBuiltin\nfrom openzeppelin.token.erc721.library import ERC721\n\n@constructor\nfunc constructor{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}(\n) {\n    ERC721.nonexistent_method();\n    return ();\n}\n"
  },
  {
    "path": "test/general-tests/expect-error-on-compile/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/function-argument-number/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\nhardhatStarknetTest(\"--no-compile test/function-args-test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/function-argument-number/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/function-argument-number/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/getBalance/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetTest(\"--no-compile test/get-balance.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/getBalance/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/getBalance/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/getContractFactory/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([]);\nhardhatStarknetTest(\"--no-compile test/path-test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/getContractFactory/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {};\n"
  },
  {
    "path": "test/general-tests/getContractFactory/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/hardhat-run/check.ts",
    "content": "// import { hardhatStarknetCompileDeprecated, hardhatStarknetRun } from \"../../utils/cli-functions\";\n// import { ensureEnvVar } from \"../../utils/utils\";\n\nconsole.log(\"Testing hh run with --starknet-network is currently disabled\");\n// const network = ensureEnvVar(\"NETWORK\");\n\n// hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n// hardhatStarknetRun(`--no-compile scripts/quick-script.ts --starknet-network ${network}`.split(\" \"));\n"
  },
  {
    "path": "test/general-tests/hardhat-run/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/hardhat-run/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/plain/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([]);\nhardhatStarknetTest([\"test/sample-test.ts\", \"--no-compile\"]);\n"
  },
  {
    "path": "test/general-tests/plain/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/plain/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"alphaGoerli2\": true,\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/postman/check.ts",
    "content": "import { exec } from \"../../utils/utils\";\nimport { spawn } from \"child_process\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { NODE_PORT } from \"../../constants/constants\";\n\nhardhatStarknetCompileDeprecated([\"contracts/l1l2.cairo\"]);\n\nspawn(\"npx\", [\"hardhat\", \"node\", \"--port\", NODE_PORT], { detached: true });\nexec(\"sleep 1\");\n\nhardhatStarknetTest(\"--network localhost test/postman.test.ts\".split(\" \"));\nexec(`kill -9 $(lsof -t -i:${NODE_PORT})`);\n"
  },
  {
    "path": "test/general-tests/postman/hardhat.config.ts",
    "content": "import \"@nomiclabs/hardhat-ethers\";\n\nimport \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    solidity: \"0.6.12\",\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/postman/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/predeployed-accounts-test/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetTest(\"--no-compile test/get-predeployed-accounts.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/predeployed-accounts-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/predeployed-accounts-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/proxy-call/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetTest(\"--no-compile scripts/delegate-proxy.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/proxy-call/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        recompile: true\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/proxy-call/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/relative-artifact-test/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport * as fs from \"fs\";\n\nhardhatStarknetCompileDeprecated(\"contracts/contract.cairo contracts/util.cairo\".split(\" \"));\n\nfs.cpSync(\"starknet-artifacts/contracts\", \"test/test-artifacts\", { recursive: true });\n\nhardhatStarknetTest(\"--no-compile test/relative-artifacts.test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/relative-artifact-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/relative-artifact-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/short-string-test/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nprocess.chdir(\"..\");\n\n// The config file used for running mocha tests is the one in root\n\nhardhatStarknetTest(\n    \"--no-compile test/general-tests/short-string-test/short-string-test.ts\".split(\" \")\n);\n"
  },
  {
    "path": "test/general-tests/short-string-test/hardhat.config.ts",
    "content": "/* This file is empty because the config file used is at the project root, however it is still needed for the test script to run. */\n"
  },
  {
    "path": "test/general-tests/short-string-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/short-string-test/short-string-test.ts",
    "content": "import { expect } from \"chai\";\nimport { starknet } from \"hardhat\";\n\ndescribe(\"Starknet\", function () {\n    this.timeout(300_000);\n\n    const inputString = \"hello\";\n    const convertedString = BigInt(\"448378203247\");\n\n    const invalidLengthString = \"string with more than 31 characters\";\n\n    const exactString = \"string of exactly 31 characters\";\n    const convertedExactString = BigInt(\n        \"203991099562869677216504074689167276267761996859264679054038991384575570547\"\n    );\n    const largeString = \"string for exactly 32 characters\";\n    const invalidCharacterString = \"invalid char ÿ\";\n    const multipleInvalidCharactersString = \"invaliđ čarđ\";\n\n    it(\"should convert a valid string to a BigInt\", async function () {\n        const convertedInput = starknet.shortStringToBigInt(inputString);\n        expect(convertedInput).to.deep.equal(convertedString);\n    });\n\n    it(\"should convert a string with exactly 31 characters to a BigInt\", async function () {\n        const convertedInput = starknet.shortStringToBigInt(exactString);\n        expect(convertedInput).to.deep.equal(convertedExactString);\n    });\n\n    it(\"should convert a BigInt to a string\", async function () {\n        const convertedOutput = starknet.bigIntToShortString(convertedString);\n        expect(convertedOutput).to.deep.equal(inputString);\n    });\n\n    it(\"should fail when a string has exactly 32 characters\", async function () {\n        try {\n            starknet.shortStringToBigInt(largeString);\n            expect.fail(\"Should have failed on converting a string with more than 31 characters.\");\n        } catch (err: any) {\n            expect(err.message).to.deep.equal(\"Short strings must have a max of 31 characters.\");\n        }\n    });\n\n    it(\"should fail when a string has over 31 characters\", async function () {\n        try {\n            starknet.shortStringToBigInt(invalidLengthString);\n            expect.fail(\"Should have failed on converting a string with more than 31 characters.\");\n        } catch (err: any) {\n            expect(err.message).to.deep.equal(\"Short strings must have a max of 31 characters.\");\n        }\n    });\n\n    it(\"should fail when a string has a non-standard-ASCII character\", async function () {\n        try {\n            starknet.shortStringToBigInt(invalidCharacterString);\n            expect.fail(\"Should have failed on converting a string with an invalid character.\");\n        } catch (err: any) {\n            expect(err.message).to.deep.equal(\"Non-standard-ASCII character: ÿ\");\n        }\n    });\n\n    it(\"should fail when a string has multiple non-standard-ASCII characters\", async function () {\n        try {\n            starknet.shortStringToBigInt(multipleInvalidCharactersString);\n            expect.fail(\"Should have failed on converting a string with invalid characters.\");\n        } catch (err: any) {\n            expect(err.message).to.deep.equal(\"Non-standard-ASCII characters: đ, č\");\n        }\n    });\n});\n"
  },
  {
    "path": "test/general-tests/starknet-plugin-version/check.ts",
    "content": "import { hardhatStarknetPluginVersion } from \"../../utils/cli-functions\";\n\nhardhatStarknetPluginVersion();\n"
  },
  {
    "path": "test/general-tests/starknet-plugin-version/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/starknet-plugin-version/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/general-tests/starknet-verify/check.ts",
    "content": "import { assertEqual, ensureEnvVar, exec } from \"../../utils/utils\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetVerify } from \"../../utils/cli-functions\";\nimport axios from \"axios\";\n\nconsole.log(\n    \"The starknet-verify test is too flaky so it is temporarily suspended. Make sure it's working!\"\n);\nprocess.exit(0);\n\nconst network = ensureEnvVar(\"NETWORK\");\n\nconst mainContract = \"contracts/contract.cairo\";\nconst utilContract = \"contracts/util.cairo\";\n\nhardhatStarknetCompileDeprecated(`${mainContract} ${utilContract}`.split(\" \"));\n\nthrow new Error(\"Missing code: Deploy with salt and extract address\");\nconst address = \"\";\n\nconsole.log(\"Sleeping to allow Voyager to index the deployment\");\nexec(\"sleep 1m\");\n\nhardhatStarknetVerify(\n    `--starknet-network ${network} --path ${mainContract} ${utilContract} --address ${address} --compiler-version 0.9.0 --license \"No License (None)\"`.split(\n        \" \"\n    )\n);\nconsole.log(\"Sleeping to allow Voyager to register the verification\");\nexec(\"sleep 15s\");\n\n(async () => {\n    const { data } = await axios.get(\n        `https://goerli-2.voyager.online/api/contract/${address}/code`\n    );\n    assertEqual(data.abiVerified, \"true\", \"Contract is not verified\");\n})();\n"
  },
  {
    "path": "test/general-tests/starknet-verify/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        dockerizedVersion: \"0.9.0\",\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/starknet-verify/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"alphaGoerli2\": true\n}\n"
  },
  {
    "path": "test/general-tests/transaction-trace/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\nhardhatStarknetTest(\"--no-compile test/transaction-trace-test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/general-tests/transaction-trace/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    solidity: \"0.6.12\",\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/general-tests/transaction-trace/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/predeployed-accounts-test/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n// Tests race condition on proxy server by making multiple calls to the\n// function getAccountFromAddress and that the proxy server\n// handles simultaneous requests correctly and that the port assignment\n// on the integrated-devnet environment is implemented correctly\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetTest(\"--no-compile test/get-predeployed-accounts.test.ts\".split(\" \"));\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/predeployed-accounts-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: \"active\",\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/predeployed-accounts-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-active-venv/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    hardhatStarknetTest(\"--no-compile test/integrated-devnet.test.ts\".split(\" \"));\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-active-venv/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: \"active\",\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-active-venv/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-active-venv-args/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    process.env.EXPECTED_GAS_PRICE = \"2000000000\";\n    hardhatStarknetTest(\"--no-compile test/integrated-devnet-args.test.ts\".split(\" \"));\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-active-venv-args/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: \"active\",\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--lite-mode\", \"--gas-price\", process.env.EXPECTED_GAS_PRICE, \"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-active-venv-args/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-default/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    hardhatStarknetTest(\"--no-compile test/integrated-devnet.test.ts\".split(\" \"));\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-default/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            // using the default runner\n            // neither venv nor dockerized version is specified\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-default/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    hardhatStarknetTest(\"--no-compile test/integrated-devnet.test.ts\".split(\" \"));\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            dockerizedVersion: process.env.STARKNET_DEVNET,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-address-occupied/check.ts",
    "content": "import { spawn } from \"child_process\";\nimport { checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    // run devnet which will cause integrated-devnet to fail\n    const result = spawn(\n        \"starknet-devnet\",\n        \"--host 127.0.0.1 --port 5050 --accounts 0\".split(\" \"),\n        { detached: true }\n    );\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n\n    const execution = hardhatStarknetTest(\n        \"--no-compile test/integrated-devnet.test.ts\".split(\" \"),\n        true\n    );\n    assertContains(execution.stderr, \"127.0.0.1:5050 already occupied.\");\n    result.kill();\n\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-address-occupied/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            dockerizedVersion: process.env.STARKNET_DEVNET,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-address-occupied/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-args/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    process.env.EXPECTED_GAS_PRICE = \"2000000000\";\n    hardhatStarknetTest(\"--no-compile test/integrated-devnet-args.test.ts\".split(\" \"));\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-args/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            dockerizedVersion: process.env.STARKNET_DEVNET,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--lite-mode\", \"--gas-price\", process.env.EXPECTED_GAS_PRICE, \"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-args/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-full-image/check.ts",
    "content": "import { hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n// Test how full image specification is handled\n\n(async () => {\n    // no danger in using a devnet to whose API we are not adapted (latest)\n    // as this test only relies on /is_alive\n    for (const devnetVersion of [\n        \"shardlabs/starknet-devnet:latest\",\n        \"shardlabs/starknet-devnet-rs:latest\"\n    ]) {\n        await checkDevnetIsNotRunning();\n        process.env.STARKNET_DEVNET = devnetVersion;\n        hardhatStarknetTest([\n            \"--no-compile\",\n            \"test/integrated-devnet.test.ts\",\n            // run just the one test from the file\n            \"--grep\",\n            \"\\\"should have devnet endpoint alive\\\"\"\n        ]);\n    }\n\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-full-image/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            dockerizedVersion: process.env.STARKNET_DEVNET,\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-full-image/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-vmlang-rust/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    const execution = hardhatStarknetTest(\"--no-compile test/integrated-devnet.test.ts\".split(\" \"));\n    assertContains(execution.stderr, \"Using Cairo VM: Rust\");\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-vmlang-rust/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            dockerizedVersion: process.env.STARKNET_DEVNET,\n            vmLang: \"rust\",\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"],\n            stderr: \"STDERR\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-vmlang-rust/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-wrong-cli/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    const execution = hardhatStarknetTest(\n        \"--no-compile test/integrated-devnet.test.ts\".split(\" \"),\n        true\n    );\n    assertContains(\n        execution.stderr,\n        \"starknet-devnet: error: --accounts must be a positive integer; got: invalid_value.\"\n    );\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-wrong-cli/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            dockerizedVersion: process.env.STARKNET_DEVNET,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--accounts\", \"invalid_value\", \"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-docker-wrong-cli/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-STDERR/check.ts",
    "content": "import { readFileSync } from \"fs\";\nimport { assertExistence, checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n\n    const expectedStdout = \"Account #0\";\n    const expectedWarning =\n        \"WARNING: Use these accounts and their keys ONLY for local testing. DO NOT use them on mainnet or other live networks because you will LOSE FUNDS.\";\n\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    const execution = hardhatStarknetTest(\"--no-compile test/integrated-devnet.test.ts\".split(\" \"));\n    assertContains(execution.stderr, expectedWarning);\n\n    // Checks if file logs/stderr.log exists and contains the expected warning string\n    assertExistence(\"logs/stdout.log\");\n    const stdout = readFileSync(\"logs/stdout.log\", \"utf-8\");\n    assertContains(stdout, expectedStdout);\n\n    console.log(\"Success\");\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-STDERR/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: process.env.STARKNET_DEVNET_PATH,\n            url: \"http://127.0.0.1:5050\",\n            stdout: \"logs/stdout.log\",\n            stderr: \"STDERR\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-STDERR/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-STDOUT/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    const execution = hardhatStarknetTest(\n        \"--no-compile test/integrated-devnet.test.ts\".split(\" \"),\n        true\n    );\n    assertContains(\n        execution.stderr,\n        \"starknet-devnet: error: --accounts must be a positive integer; got: invalid_value.\"\n    );\n\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-STDOUT/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: process.env.STARKNET_DEVNET_PATH,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--accounts\", \"invalid_value\"],\n            stderr: \"STDOUT\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-STDOUT/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-file/check.ts",
    "content": "import { readFileSync } from \"fs\";\nimport { assertExistence, checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n\n    const expectedStdout = \"Account #0\";\n    const expectedWarning =\n        \"WARNING: Use these accounts and their keys ONLY for local testing. DO NOT use them on mainnet or other live networks because you will LOSE FUNDS.\";\n\n    const output = hardhatStarknetTest(\"--no-compile test/integrated-devnet.test.ts\".split(\" \"));\n    // Checks if output contains the expected string from stdout\n    assertContains(output.stdout, expectedStdout);\n\n    // Checks if file logs/stderr.log exists and contains the expected warning string\n    assertExistence(\"logs/stderr.log\");\n    const stderr = readFileSync(\"logs/stderr.log\", \"utf-8\");\n    assertContains(stderr, expectedWarning);\n\n    console.log(\"Success\");\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-file/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: process.env.STARKNET_DEVNET_PATH,\n            url: \"http://127.0.0.1:5050\",\n            stdout: \"STDOUT\",\n            stderr: \"logs/stderr.log\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-stderr-to-file/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    hardhatStarknetTest(\"--no-compile test/integrated-devnet.test.ts\".split(\" \"));\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: process.env.STARKNET_DEVNET_PATH,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv-address-occupied/check.ts",
    "content": "import { spawn } from \"child_process\";\nimport { checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\nimport { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n\n    const result = spawn(\n        \"starknet-devnet\",\n        \"--host 127.0.0.1 --port 5050 --accounts 0\".split(\" \"),\n        { detached: true }\n    );\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    const execution = hardhatStarknetTest(\n        \"--no-compile test/integrated-devnet.test.ts\".split(\" \"),\n        true\n    );\n    assertContains(execution.stderr, \"127.0.0.1:5050 already occupied.\");\n    result.kill();\n\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv-address-occupied/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: process.env.STARKNET_DEVNET_PATH,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv-address-occupied/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv-wrong-cli/check.ts",
    "content": "import { hardhatStarknetCompileDeprecated, hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { checkDevnetIsNotRunning, assertContains } from \"../../utils/utils\";\n\n(async () => {\n    await checkDevnetIsNotRunning();\n\n    hardhatStarknetCompileDeprecated([\"contracts/contract.cairo\"]);\n    const execution = hardhatStarknetTest(\n        \"--no-compile test/integrated-devnet.test.ts\".split(\" \"),\n        true\n    );\n    assertContains(\n        execution.stderr,\n        \"starknet-devnet: error: --accounts must be a positive integer; got: invalid_value.\"\n    );\n\n    await checkDevnetIsNotRunning();\n})();\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv-wrong-cli/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        integratedDevnet: {\n            venv: process.env.STARKNET_DEVNET_PATH,\n            url: \"http://127.0.0.1:5050\",\n            args: [\"--accounts\", \"invalid_value\", \"--seed\", \"42\"]\n        }\n    }\n};\n"
  },
  {
    "path": "test/integrated-devnet-tests/with-venv-wrong-cli/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"integrated-devnet\": true\n}\n"
  },
  {
    "path": "test/network.schema",
    "content": "{\n    \"$schema\": \"https://json-schema.org/draft-07/schema\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"devnet\": {\n            \"type\": \"boolean\"\n        },\n        \"alphaGoerli2\": {\n            \"type\": \"boolean\"\n        },\n        \"integrated-devnet\": {\n            \"type\": \"boolean\"\n        }\n    }\n}\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-run/check.ts",
    "content": "import { hardhatStarknetRun } from \"../../utils/cli-functions\";\nimport { rmrfSync } from \"../../utils/utils\";\n\n// Hardhat run command\nconsole.log(\"should recompile with deleted artifact on hardhat run\");\nrmrfSync(\"starknet-artifacts/contracts/contract.cairo\");\nhardhatStarknetRun(\"--no-compile scripts/deploy.ts\".split(\" \"));\n\nconsole.log(\"should recompile with cache file deleted on hardhat run\");\nrmrfSync(\"cache/cairo-files-cache.json\");\nhardhatStarknetRun(\"--no-compile scripts/deploy.ts\".split(\" \"));\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-run/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        recompile: true\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-run/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-test/check.ts",
    "content": "import { copyFileSync, readFileSync, appendFileSync } from \"fs\";\nimport path from \"path\";\nimport { hardhatStarknetTest } from \"../../utils/cli-functions\";\nimport { assertNotEqual, rmrfSync } from \"../../utils/utils\";\n\nconst prefix = path.join(__dirname);\nconst contractName = \"contract_test_cache.cairo\";\nconst contractPath = path.join(\"contracts\", contractName);\n\nconst dependencyName = \"dependency.cairo\";\nconst dependencyPath = path.join(\"contracts\", dependencyName);\n\nrmrfSync(dependencyPath);\nrmrfSync(contractPath);\n// Hardhat test command\nconsole.log(\"Testing Recompilation with new contract added\");\ncopyFileSync(path.join(prefix, contractName), contractPath);\ncopyFileSync(path.join(prefix, dependencyName), dependencyPath);\n\nhardhatStarknetTest(\"--no-compile test/recompilation/recompilation-main-test.ts\".split(\" \"));\n\nconsole.log(\"Testing Recompilation with artifacts deleted\");\nrmrfSync(\"starknet-artifacts/contracts/contract.cairo\");\nhardhatStarknetTest(\"--no-compile test/recompilation/recompilation-main-test.ts\".split(\" \"));\n\nconsole.log(\"Testing Recompilation with updated contract\");\n// Appending a new function to the contract\nappendFileSync(\n    \"contracts/contract_test_cache.cairo\",\n    readFileSync(path.join(prefix, \"get_balance.cairo\")).toString()\n);\nhardhatStarknetTest(\"--no-compile test/recompilation/recompilation-update-test.ts\".split(\" \"));\n\nconsole.log(\"Testing Recompilation with cache file deleted\");\nrmrfSync(\"cache/cairo-files-cache.json\");\nhardhatStarknetTest(\"--no-compile test/recompilation/recompilation-main-test.ts\".split(\" \"));\n\nconsole.log(\"Testing Recompilation with dependency changed\");\nappendFileSync(dependencyPath, \"//\");\nhardhatStarknetTest(\"--no-compile test/recompilation/recompilation-dependency-test.ts\".split(\" \"));\n\nconsole.log(\"Testing Recompilation with source deleted\");\ncopyFileSync(\"cache/cairo-files-cache.json\", \"cache-content-before.json\");\nrmrfSync(\"contracts/contract_test_cache.cairo\");\nhardhatStarknetTest(\"--no-compile test/recompilation/recompilation-main-test.ts\".split(\" \"));\n// Check that the cache file was updated using diff\nconst cacheContentAfter = readFileSync(\"cache/cairo-files-cache.json\");\nconst cacheContentBefore = readFileSync(\"cache-content-before.json\");\nassertNotEqual(cacheContentAfter, cacheContentBefore, \"Cache file was not updated.\");\n\nconsole.log(\"Testing Recompilation one contract added another deleted\");\nrmrfSync(\"contracts/contract_test_cache.cairo\");\nrmrfSync(\"contracts/dependency.cairo\");\n\nconst contractWithNoDependency = \"contract_test_cache_no_dependency.cairo\";\ncopyFileSync(path.join(prefix, contractWithNoDependency), contractPath);\n\nhardhatStarknetTest(\"--no-compile test/recompilation/recompilation-main-test.ts\".split(\" \"));\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-test/contract_test_cache.cairo",
    "content": "// Declare this file as a Starknet contract.\n%lang starknet\n\nfrom starkware.cairo.common.cairo_builtins import HashBuiltin\nfrom dependency import almost_equal as aeq\n\n// Define a storage variable.\n@storage_var\nfunc balance() -> (res: felt) {\n}\n\n// Increases the balance by the given amount.\n@external\nfunc increase_balance{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}(\n    amount: felt\n) {\n    let (res) = balance.read();\n    balance.write(res + amount);\n    return ();\n}\n\n@view\nfunc use_almost_equal(a, b) -> (res: felt) {\n    let (res) = aeq(a=a, b=b);\n    return (res,);\n}\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-test/contract_test_cache_no_dependency.cairo",
    "content": "// Declare this file as a Starknet contract.\n%lang starknet\n\nfrom starkware.cairo.common.cairo_builtins import HashBuiltin\n\n// Define a storage variable.\n@storage_var\nfunc balance() -> (res: felt) {\n}\n\n// Increases the balance by the given amount.\n@external\nfunc increase_balance{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}(\n    amount: felt\n) {\n    let (res) = balance.read();\n    balance.write(res + amount);\n    return ();\n}\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-test/dependency.cairo",
    "content": "%lang starknet\n\n@view\nfunc almost_equal(a, b) -> (res: felt) {\n    if ((a - b) * (a - b - 1) * (a - b + 1) == 0) {\n        return (res=1);\n    }\n    return (res=0);\n}\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-test/get_balance.cairo",
    "content": "// Returns the current balance.\n@view\nfunc get_balance{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}() -> (res: felt) {\n    let (res) = balance.read();\n    return (res,);\n}\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-test/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        recompile: true\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/recompilation-tests/hardhat-test/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/recompilation-tests/recompiler-default/check.ts",
    "content": "import { hardhatStarknetRun } from \"../../utils/cli-functions\";\nimport { assertContains, rmrfSync } from \"../../utils/utils\";\n\nconst expected = \"StarknetPluginError: Could not find JSON artifact for\";\n\nconsole.log(\"Testing with deleted artifact on recompiler option set to default (off)\");\nrmrfSync(\"starknet-artifacts/contracts/contract.cairo\");\nconst execution = hardhatStarknetRun(\"--no-compile scripts/deploy.ts\".split(\" \"), true);\nassertContains(execution.stderr, expected);\nconsole.log(\"Success\");\n"
  },
  {
    "path": "test/recompilation-tests/recompiler-default/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/recompilation-tests/recompiler-default/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/recompilation-tests/recompiler-off/check.ts",
    "content": "import { hardhatStarknetRun } from \"../../utils/cli-functions\";\nimport { assertContains, rmrfSync } from \"../../utils/utils\";\n\nconst expected = \"StarknetPluginError: Could not find JSON artifact for\";\n\nconsole.log(\"Testing with deleted artifact on recompiler option set to default (off)\");\nrmrfSync(\"starknet-artifacts/contracts/contract.cairo\");\nconst execution = hardhatStarknetRun(\"--no-compile scripts/deploy.ts\".split(\" \"), true);\nassertContains(execution.stderr, expected);\nconsole.log(\"Success\");\n"
  },
  {
    "path": "test/recompilation-tests/recompiler-off/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        network: process.env.NETWORK,\n        recompile: false\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/recompilation-tests/recompiler-off/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/utils/cli-functions.ts",
    "content": "import shell from \"shelljs\";\nimport { assertEqual, assertNotEqual } from \"./utils\";\n\nexport function exec(cmd: string, expectFailure = false) {\n    const result = shell.exec(cmd, { silent: expectFailure });\n    const msg = `Command ${cmd} failed.\\n${result.stderr}`;\n    if (!expectFailure) {\n        assertEqual(result.code, 0, msg);\n    } else {\n        assertNotEqual(result.code, 0, msg);\n    }\n\n    return result;\n}\n\nexport const hardhatStarknetCompileDeprecated = (args: Array<string>, expectFailure = false) => {\n    return exec(`npx hardhat starknet-compile-deprecated ${args.join(\" \")}`, expectFailure);\n};\n\nexport const hardhatStarknetCompile = (args: Array<string>, expectFailure = false) => {\n    return exec(`npx hardhat starknet-compile ${args.join(\" \")}`, expectFailure);\n};\n\nexport const hardhatStarknetRun = (args: Array<string>, expectFailure = false) => {\n    return exec(`npx hardhat run ${args.join(\" \")}`, expectFailure);\n};\n\nexport const hardhatStarknetTest = (args: Array<string>, expectFailure = false) => {\n    return exec(`npx hardhat test ${args.join(\" \")}`, expectFailure);\n};\n\nexport const hardhatStarknetVerify = (args: Array<string>, expectFailure = false) => {\n    return exec(`npx hardhat starknet-verify ${args.join(\" \")}`, expectFailure);\n};\n\nexport const hardhatStarknetPluginVersion = () => {\n    return exec(\"npx hardhat starknet-plugin-version\");\n};\n\nexport const hardhatStarknetBuild = (args: Array<string>, expectFailure = false) => {\n    return exec(`npx hardhat starknet-build ${args.join(\" \")}`, expectFailure);\n};\n"
  },
  {
    "path": "test/utils/scarb-utils.ts",
    "content": "import path from \"path\";\nimport { assertExistence, assertNotEmpty } from \"./utils\";\nimport { hardhatStarknetRun, hardhatStarknetTest } from \"./cli-functions\";\n\nconst DEFAULT_PACKAGE_NAME = \"sample_package_name\";\n\n/**\n * Assert that artifacts of a project exist\n * @param projectName the name of the project\n */\nexport function scarbArtifactsAssertion(\n    projectName: string,\n    packageName = DEFAULT_PACKAGE_NAME,\n    contractNames = [\"FirstContract\", \"AnotherContract\", \"FibContract\"],\n    extensions = [\".json\", \"_abi.json\", \".casm\"]\n) {\n    const projectPath = path.join(\"starknet-artifacts\", projectName);\n    for (const contractName of contractNames) {\n        const compoundContractName = `${packageName}_${contractName}`;\n        const contractDirPath = path.join(projectPath, `${compoundContractName}.cairo`);\n        for (const extension of extensions) {\n            const artifactPath = path.join(contractDirPath, `${compoundContractName}${extension}`);\n            assertExistence(artifactPath);\n            assertNotEmpty(artifactPath);\n        }\n    }\n}\n\nfunction assertDeclarable(\n    packageName = DEFAULT_PACKAGE_NAME,\n    contractNames = [\"FirstContract\", \"AnotherContract\"]\n) {\n    // attempt declaration for all contracts except FibContract\n    for (const contractName of contractNames) {\n        const compoundContractName = `${packageName}_${contractName}`;\n\n        // the script requires the environment variable, but let's store it just in case\n        const oldEnvVarValue = process.env.DECLARABLE_CONTRACT;\n        process.env.DECLARABLE_CONTRACT = compoundContractName;\n        try {\n            hardhatStarknetRun([\"scripts/declare.ts\", \"--no-compile\"]);\n        } finally {\n            // restore\n            process.env.DECLARABLE_CONTRACT = oldEnvVarValue;\n        }\n    }\n}\n\n/**\n * Asserts existence, non-emptiness, declarableness, interactivity of the contracts\n * from a project built by Scarb.\n * @param projectName the name of the built project\n */\nexport function scarbAssertions(projectName: string, packageName = DEFAULT_PACKAGE_NAME) {\n    scarbArtifactsAssertion(projectName);\n\n    assertDeclarable(packageName);\n\n    // attempt full declare+deploy+call on FibContract\n    // if it was declared earlier with the rest, this script would fail\n    hardhatStarknetTest([\"test/cairo1/fib-contract.test.ts\", \"--no-compile\"]);\n}\n"
  },
  {
    "path": "test/utils/utils.ts",
    "content": "import axios from \"axios\";\nimport assert, { AssertionError } from \"assert\";\nimport { existsSync, rmSync, statSync } from \"fs\";\nimport path from \"path\";\nimport shell from \"shelljs\";\nimport { DEVNET_URL } from \"../constants/constants\";\n\nexport function exec(cmd: string) {\n    const result = shell.exec(cmd);\n    assertEqual(result.code, 0, `Command ${cmd} failed.\\n${result.stderr}`);\n\n    return result;\n}\n\nexport function assertContains(output: string, pattern: string) {\n    if (!output.includes(pattern)) {\n        throw new AssertionError({\n            message: `Pattern not in input\\nPattern: ${pattern}\\nInput: ${output}`\n        });\n    }\n}\n\nexport function extractAddress(source: string, pattern: string) {\n    // Replaces all line breaks with a space\n    source = source.replace(/(\\r\\n|\\n|\\r)/gm, \" \");\n    // Take the first word in source after the pattern\n    const res = source.split(pattern)[1].split(\" \")[0];\n    return res;\n}\n\nexport async function checkDevnetIsNotRunning(url = DEVNET_URL): Promise<void> {\n    try {\n        const res = await axios.get(`${url}/is_alive`);\n        throw new AssertionError({\n            message: `Devnet is running and responded with status ${res.status}`\n        });\n    } catch (err) {\n        console.log(\"Devnet is not running!\");\n    }\n}\n\nexport function ensureEnvVar(varName: string): string {\n    if (!process.env[varName]) {\n        throw new Error(`Env var ${varName} not set or empty`);\n    }\n    return process.env[varName] as string;\n}\n\nexport function rmrfSync(path: string) {\n    rmSync(path, { recursive: true, force: true });\n}\n\nexport function assertEqual(val1: unknown, val2: unknown, msg?: string) {\n    assert.strictEqual(val1, val2, msg);\n}\n\nexport function assertNotEqual(val1: unknown, val2: unknown, msg?: string) {\n    assert.notEqual(val1, val2, msg);\n}\n\nexport function assertExistence(path: string, expected = true) {\n    if (existsSync(path) !== expected) {\n        const message = `Expected ${path} to ${expected ? \"\" : \"not \"}exist`;\n        throw new AssertionError({ message });\n    }\n}\n\nexport function assertNotEmpty(path: string) {\n    const stat = statSync(path);\n    if (stat.size <= 0) {\n        const message = `Size of ${path} expected to be > 0`;\n        throw new AssertionError({ message });\n    }\n}\n\nexport function assertCompilationArtifactsExist(artifactDir: string, contractName: string) {\n    for (const suffix of [\".json\", \".casm\", \"_abi.json\"]) {\n        assertExistence(path.join(artifactDir, contractName + suffix));\n    }\n}\n\nexport function assertGreater<T>(value1: T, value2: T) {\n    if (!(value1 > value2)) {\n        const message = `${value1} expected to be greater than ${value2}`;\n        throw new AssertionError({ message });\n    }\n}\n"
  },
  {
    "path": "test/venv-tests/with-venv/check.ts",
    "content": "import {\n    hardhatStarknetCompileDeprecated,\n    hardhatStarknetRun,\n    hardhatStarknetTest\n} from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([]);\n\n// assert successful interaction with contracts on the file system\nhardhatStarknetTest([\"test/contract-factory-creation.test.ts\", \"--no-compile\"]);\n\n// assert successful interaction with the network\nhardhatStarknetRun([\"scripts/deploy.ts\", \"--no-compile\"]);\n"
  },
  {
    "path": "test/venv-tests/with-venv/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"../my-venv\",\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/venv-tests/with-venv/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"alphaGoerli2\": true,\n    \"devnet\": true\n}\n"
  },
  {
    "path": "test/venv-tests/with-venv-active/check.ts",
    "content": "import {\n    hardhatStarknetCompileDeprecated,\n    hardhatStarknetRun,\n    hardhatStarknetTest\n} from \"../../utils/cli-functions\";\n\nhardhatStarknetCompileDeprecated([]);\n\n// assert successful interaction with contracts on the file system\nhardhatStarknetTest([\"test/contract-factory-creation.test.ts\", \"--no-compile\"]);\n\n// assert successful interaction with the network\nhardhatStarknetRun([\"scripts/deploy.ts\", \"--no-compile\"]);\n"
  },
  {
    "path": "test/venv-tests/with-venv-active/hardhat.config.ts",
    "content": "import \"@shardlabs/starknet-hardhat-plugin\";\n\nmodule.exports = {\n    starknet: {\n        venv: \"active\",\n        network: process.env.NETWORK\n    },\n    networks: {\n        devnet: {\n            url: \"http://127.0.0.1:5050\"\n        }\n    }\n};\n"
  },
  {
    "path": "test/venv-tests/with-venv-active/network.json",
    "content": "{\n    \"$schema\": \"../../network.schema\",\n    \"alphaGoerli2\": true,\n    \"devnet\": true\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n    \"compilerOptions\": {\n        \"allowJs\": true,\n        \"target\": \"es2020\",\n        \"sourceMap\": true,\n        \"esModuleInterop\": true,\n        \"strict\": true,\n        \"outDir\": \"dist\",\n        \"resolveJsonModule\": true,\n        \"strictNullChecks\": false,\n        \"declaration\": true,\n        \"module\": \"commonjs\",\n        \"noImplicitOverride\": true,\n        \"typeRoots\": [\"./node_modules/@types\"]\n    },\n    \"include\": [\"./src\", \"config.json\", \"contract-artifacts/**/*.json\"]\n}\n"
  },
  {
    "path": "www/.gitignore",
    "content": "# Dependencies\n/node_modules\n\n# Production\n/build\n\n# Generated files\n.docusaurus\n.cache-loader\n\n# Misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "www/README.md",
    "content": "# Website\n\nThis website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.\n\n### Installation\n\n```\n$ npm ci\n```\n\n### Local Development\n\n```\n$ npm start\n```\n\nThis command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.\n\n### Build\n\n```\n$ npm run build\n```\n\nThis command generates static content into the `build` directory and can be served using any static contents hosting service.\n\n### Deployment\n\nUsing SSH:\n\n```\n$ USE_SSH=true npm run deploy\n```\n\nNot using SSH:\n\n```\n$ GIT_USER=<Your GitHub username> npm run deploy\n```\n\nIf you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.\n"
  },
  {
    "path": "www/babel.config.js",
    "content": "module.exports = {\n    presets: [require.resolve(\"@docusaurus/core/lib/babel/preset\")]\n};\n"
  },
  {
    "path": "www/blog/authors.yml",
    "content": "# No blog posts yet\n# Ref: https://docusaurus.io/docs/blog\n# Use this as template to add author metadata\nshramee:\n    name: Shramee\n    title: Contributor\n    url: https://github.com/shramee\n    image_url: https://github.com/shramee.png\n"
  },
  {
    "path": "www/docs/dev.md",
    "content": "# Contribute\n\n## Set up development environment\n\n### Clone the repository\n\n```\n$ git clone git@github.com:0xSpaceShard/starknet-hardhat-plugin.git\n$ cd starknet-hardhat-plugin\n```\n\n### Install dependencies\n\n```\n$ npm ci\n```\n\n### Compile\n\n```\n$ npm run build\n```\n\n### Set up the example repository\n\nThe `starknet-hardhat-example` repository is used to showcase and test this plugin's functionality.\nSet it up following [its readme](https://github.com/0xSpaceShard/starknet-hardhat-example#get-started), but after installing it, link it to use your local plugin repository:\n\n```\n$ cd <YOUR_PLUGIN_REPO_PATH>\n$ npm link\n\n$ cd <YOUR_EXAMPLE_REPO_PATH>\n$ npm link @shardlabs/starknet-hardhat-plugin\n```\n\nIf your IDE is reporting Typescript issues after compiling the plugin, you may want to restart the Typescript language server (e.g. in VS Code on Linux: Ctrl+Shift+P)\n\n## Testing\n\nA test case is added by creating a directory in a subdirectory of a test group in the `test` directory. E.g. `declare-test` is a test case in the `general-tests` test group. A test case should contain:\n\n-   a `check.ts` script which does the testing logic\n-   a `network.json` file which specifies on which networks should the test case be run\n-   a `hardhat.config.ts` file will be used\n\nThe main testing script is `scripts/test.ts`. It iterates over the test cases the test group specified by the `TEST_SUBDIR` environment variable.\n\n### Executing tests locally\n\nWhen running tests locally, you probably don't want to run the whole `test.sh` script as it may alter your development environment. However, you can run individual tests by:\n\n-   positioning yourself in your example repository\n-   configuring the `hardhat.config.ts`\n-   executing the `check.ts` script (potentially modifying it to address path differences)\n\nTo run all tests, you can use the `test-` scripts defined in `package.json`. For the tests to work, you may need to set the values from `config.json` as environment variables. You should also have the [`jq` CLI tool](https://stedolan.github.io/jq/) installed.\n\n### Executing individual tests\n\nTo run a specific test case in the test group you can pass in the name of directory inside test group. E.g. to run `declare-test` test case in `general-tests` test group, you can use the script\n`test-general-tests` and pass in the name of the test after a `--` like this,\n\n```sh\n$ npm run test-general-tests -- declare-test\n```\n\n### Executing individual tests with dockerized environnement\n\nIf you are only running Devnet in dockerized mode, you don't need to install all the dev tools locally. With a properly set up `starknet-hardhat-example` (read more [here](#Set-up-the-example-repository)), you can position yourself in that repository and to execute the `declare-test` case of the `general-tests` group, you can run:\n\n```sh\n$ npx ts-node STARKNET_HARDHAT_PLUGIN_PATH/test/general-tests/declare-test/check.ts\n```\n\nUsing this command will use the starknet-hardhat-example hardhat.config.ts. You can make modifications to make it match the config file in the test directory `STARKNET_HARDHAT_PLUGIN_PATH/test/general-tests/declare-test/hardhat.config.ts`\n\n### Running tests in dev mode\n\nTo run tests locally with test-dev. This is designed to run same tests repeatedly while developing.\n\n```sh\n$ npm run test-dev\n```\n\n### Executing tests on CircleCI\n\nIf you're a member of the organization and you do a push to origin, you trigger CI/CD workflow on CircleCI. Track the progress on [the dashboard](https://circleci.com/gh/0xSpaceShard/workflows/starknet-hardhat-plugin).\n\nSometimes the tests fail because of internal CircleCI or Starknet issues; in that case, you can try restarting the workflow.\n\nBear in mind that each workflow consumes credits. Track the spending [here](https://app.circleci.com/settings/plan/github/0xSpaceShard/overview).\n\nThe whole workflow is defined in `.circleci/config.yml` - you may find it somewhat chaotic as it uses dependency caching (we kind of sacrificed config clarity for performance).\n\nScript `scripts/set-alpha-vars.sh` expects account information to be set through environment variables. These variables are defined in [spaceshard CircleCI context](https://app.circleci.com/settings/organization/github/0xSpaceShard/contexts/c36fa213-2511-465b-b303-0d35d76b42eb). If you upload a new account (with new keys), you cannot modify existing variables but have to delete old ones and create new ones.\n\nTo skip running tests on CircleCI, add `[skip ci]` in the first 250 characters of the commit message.\n\n### Testing network\n\nThe script `test.sh` runs tests on Devnet and Testnet (alpha-goerli). To skip running tests on Testnet, add `[skip testnet]` to the commit message.\n\n### Creating a PR\n\nWhen adding new functionality to the plugin, you will probably also have to create a PR to the `plugin` branch of `starknet-hardhat-example`. You can then modify the `test.sh` script to use your branch instead of the `plugin` branch.\n\nIf your reviewer makes an observation that requires a fix, after you push the commit with the fix, find the commit link on the PR conversation page, and reply to the reviewer by providing that link. In [this example](https://github.com/0xSpaceShard/starknet-hardhat-plugin/pull/130#discussion_r913581807) the contributor even linked to the specific change of the commit - you don't have to do that if you made multiple smaller commits.\n\nWhen the PR is ready to be merged, do `Squash and merge` and delete the branch.\n\n## Adapting to a new Starknet / cairo-lang version\n\nSince the plugin relies on [Devnet](https://github.com/0xSpaceShard/starknet-devnet) in its tests, first an adapted version of Devnet might need to be released. Current versions of Devnet and cairo-lang used in tests are specified in `config.json`.\n\n### In cairo-cli repo\n\nWhen a new Starknet / cairo-lang version is released, a new `cairo-cli` Docker image can be released (probably without any adaptation). This is done through the CI/CD pipeline of [the cairo-cli-docker repository](https://github.com/0xSpaceShard/cairo-cli-docker#build-a-new-image).\n\nLikely places where the old version has to be replaced with the new version are `README.md` and `constants.ts`.\n\n### In starknet-hardhat-example repo\n\nChange the version in `hardhat.config.ts`. Recompile the contracts (only important for local usage).\n\n## Architecture\n\n### Wrapper\n\nThis plugin was created as a wrapper for Starknet CLI (tool installed with cairo-lang) along with some compilation and hashing utilities. E.g. running `hardhat starknet-compile-deprecated` in a shell would create a subprocess that uses the corresponding compilation utility, while running `contractFactory.deploy()` in a Hardhat JS/TS script would create a subprocess that executes Starknet CLI's `starknet deploy`.\n\nWith the Starknet CLI deprecation for Starknet v0.13.0 the plugin's usages of the CLI core commands were replaced with near analogs utilizing `starknet.js`. For the earlier `contractFactory.deploy()` example the plugin no longer executes Starknet CLI's `starknet deploy` itself, instead it executes the equivalent HTTP requests that the CLI command would do internally.\n\nTwo wrapper implementations are used that are defined in [starknet-wrapper.ts](https://github.com/0xSpaceShard/starknet-hardhat-plugin/blob/master/src/starknet-wrappers.ts). Both rely on a [proxy server](https://github.com/0xSpaceShard/starknet-hardhat-plugin/blob/master/src/starknet_cli_wrapper.py) that imports `main` methods of `starknet` and `starknet-compile-deprecated` and uses them to execute commands (this is a speedup since a subprocess importing the whole Starknet doesn't have to be spawned for each request).\n\n-   Docker wrapper:\n    -   runs Starknet CLI in a Docker container\n    -   the default option\n-   Venv wrapper:\n    -   for users that already have `cairo-lang` installed\n    -   faster than Docker wrapper - not necessarily true since Docker wrapper also started using a proxy server\n\n### Accessing HardhatRuntimeEnvironment (hre)\n\nBefore v0.7.0 we didn't know how to export classes to users, since every class needed to have access to `hre`, which was passed on in `extendEnvironment`. After introducing dynamic `hre` importing, exporting classes has become a possibility:\n\n```typescript\nconst hre = await import(\"hardhat\");\n```\n\nIn `types/starknet.ts`, classes are specified using `typeof`, e.g. `OpenZeppelinAccount: typeof OpenZeppelinAccount`. However, exporting classes this way doesn't export their type.\n\n## Version management\n\nWhen a push is done to the `master` branch and the version in `package.json` differs from the one published on `npm`, the release process is triggered.\n\nThe updating of `package.json` doesn't have to be done directly, but can be done by running\n\n```\n$ npm version <NEW_VERSION>\n```\n\n`NEW_VERSION` can be anything documented [here](https://docs.npmjs.com/cli/v8/commands/npm-version), but will most commonly be `patch`.\n\nThis will also update `package-lock.json`, create a new commit, and create a new git tag.\n\nYou may want your version-bumping commit to contain the `[skip testnet]` string (documented [here](#testing-network)) to avoid testing on alpha-goerli (testing on testnet may postpone the version release significantly, if it will ever pass at all).\n\nIf for whatever reason the publishing workflow in CI/CD cannot be executed, the version can be released manually via `scripts/npm-publish.sh`, just be sure to have an NPM access token and that you have the rights to publish.\n\nApart from [npm](https://www.npmjs.com/package/@shardlabs/starknet-hardhat-plugin?activeTab=versions), releases are also tracked on [GitHub](https://github.com/0xSpaceShard/starknet-hardhat-plugin/releases) with [git tags](https://github.com/0xSpaceShard/starknet-hardhat-plugin/tags). Notice the prepended `v` in tag names.\n\nAfter the npm package is released and the tag is pushed with:\n\n```bash\n$ git push origin <TAG_NAME>\n```\n\nthe release can be made public [on GitHub](https://github.com/0xSpaceShard/starknet-hardhat-plugin/releases/new). Automatic note generation can be used, augmented with usage and development changes (see past releases for reference).\n\nUsers should be notified about the usage related changes. This can be done on Telegram, [Discord](https://discord.com/channels/793094838509764618/912735106899275856), [Shamans](https://community.starknet.io/t/starknet-hardhat-plugin/67) etc.\n\n### Docs\n\nNew documentation is **automatically** deployed after publishing a new version with `scripts/npm-publish.sh` (also part of CI/CD).\n\nTo manually deploy new documentation, run:\n\n```bash\n$ cd www\n$ npm ci\n$ npm run deploy\n```\n\n### Example repo after a new version\n\nAfter releasing a new plugin version, the `plugin` branch of the example repo should be updated and pushed:\n\n-   `package.json` should be updated by running `npm install --save-exact @shardlabs/starknet-hardhat-plugin@<NEW_VERSION>`\n-   The `master` branch, which serves as reference to the users, should be synchronized with the `plugin` branch. This can probably be done by doing `git reset plugin` while on `master`.\n-   Since you did `npm install`, you may need to link again, as described [initially](#set-up-the-example-repository).\n"
  },
  {
    "path": "www/docs/intro.md",
    "content": "# Starknet Hardhat Plugin\n\n[![npm package](https://img.shields.io/npm/v/@shardlabs/starknet-hardhat-plugin?color=blue)](https://www.npmjs.com/package/@shardlabs/starknet-hardhat-plugin)\n\nIf you've used Hardhat 👷‍♀️👷‍♂️ and want to develop for Starknet <img src=\"https://starkware.co/wp-content/uploads/2021/07/Group-177.svg\" alt=\"starknet\" width=\"18\"/>, this plugin might come in hand. If you've never set up a Hardhat project, check out [this guide](https://hardhat.org/tutorial/creating-a-new-hardhat-project.html).\n\n## Contents\n\n-   [Install](#install)\n-   [CLI commands](#cli-commands)\n-   [API](#api)\n-   [Testing](#testing)\n    -   [Important notes](#important-notes)\n    -   [Examples](#test-examples)\n    -   [Devnet examples](#devnet-examples)\n-   [Debugging contracts](#debugging-contracts)\n-   [Configure the plugin](#configure-the-plugin)\n-   [Account support](#account)\n-   [More examples](#more-examples)\n-   [Contribute](#contribute)\n\n## Install\n\n```\nnpm i @shardlabs/starknet-hardhat-plugin --save-dev\n```\n\nFor the latest unstable version, use\n\n```\nnpm i @shardlabs/starknet-hardhat-plugin@alpha --save-dev\n```\n\nAdd the following line to the top of your `hardhat.config.ts` (or `hardhat.config.js`):\n\n```typescript\nimport \"@shardlabs/starknet-hardhat-plugin\";\n// or\nrequire(\"@shardlabs/starknet-hardhat-plugin\");\n```\n\n### Requirements\n\nThis plugin was tested with:\n\n-   Node.js v14.17.3\n-   npm/npx v7.19.1\n-   Docker v20.10.8 (optional):\n    -   Since plugin version 0.3.4, Docker is no longer necessary if you opt for a Python environment (more info in [Config](#cairo-0-compilation)).\n    -   If you opt for the containerized version, make sure you have a running Docker daemon.\n    -   If you're experiencing Docker access issues, check [this](https://stackoverflow.com/questions/52364905/after-executing-following-code-of-dockerode-npm-getting-error-connect-eacces-v).\n-   Linux / macOS:\n    -   On Windows, we recommend using [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install) with Docker instance installed on [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install) instead of using Docker Desktop on your windows. Example installation for Ubuntu can be found [here](https://docs.docker.com/engine/install/ubuntu/).\n\n## CLI commands\n\nThis plugin defines the following Hardhat commands (also called tasks):\n\n### `starknet-compile-deprecated`\n\n```\n$ npx hardhat starknet-compile-deprecated [PATH...] [--cairo-path \"<LIB_PATH1>:<LIB_PATH2>:...\"] [--account-contract] [--disable-hint-validation]\n```\n\nCompiles Starknet Cairo 0 contracts. If no paths are provided, all Starknet contracts in the default contracts directory are compiled. Paths can be files and directories.\n\n`--cairo-path` allows specifying the locations of imported files, if necessary. Separate them with a colon (:), e.g. `--cairo-path='path/to/lib1:path/to/lib2'`\n\n`--account-contract` allows compiling an account contract.\n\n`--disable-hint-validation` allows compiling a contract without hint validation (any python code is allowed in hints, ex: print ...).\n\n### `starknet-compile`\n\n```\n$ npx hardhat starknet-compile [PATH...] [--add-pythonic-hints] [--single-file] [--replace-ids] [--allowed-libfuncs-list-file] [--allowed-libfuncs-list-name] [--cairo1-bin-dir <PATH>]\n```\n\nCompiles Starknet Cairo 1 contracts in the provided path. Paths can be files and directories. Currently, contracts importing other contracts are not supported (until this is supported, you may try to use [Scarb](https://github.com/software-mansion/scarb) and modifying its artifacts to be compatible with this plugin).\n\nCustom local compiler can be specified by providing the path of the directory holding compiler binaries (`starknet-compile` and `starknet-sierra-compile`) to `--cairo1-bin-dir` or to the `cairo1BinDir` option in your config file. E.g. if your cairo compiler repository is in `/path/to/cairo` and you built the compiler with `cargo build --bin starknet-compile --bin starknet-sierra-compile --release`, the path would be `/path/to/cairo/target/release`.\n\nIf neither `--cairo1-bin-dir` nor `cairo1BinDir` is set, the plugin will automatically download a compiler version it is adapted to. To download a specific version, set `compilerVersion` in `hardhat.config.ts` to a semver string matching one of the [official releases](https://github.com/starkware-libs/cairo/releases).\n\n```typescript\nmodule.exports = {\n  starknet: {\n    // Only one of these properties can be specified.\n    cairo1BinDir: \"/path/to/cairo/target/release/\",\n    compilerVersion: \"1.1.1\"\n    ...\n  }\n  ...\n};\n```\n\nOther CLI options are the same as in the [native Cairo compiler](https://github.com/starkware-libs/cairo).\n\nTo build more complex Cairo 1 projects, read about [`hardhat starknet-build`](#starknet-build).\n\n### `starknet-build`\n\n```\n$ npx hardhat starknet-build [PATH...] [--scarb-command <STRING>] [--skip-validate]\n```\n\nBuilds Scarb projects.\n\nEach of the provided paths is recursively looked into while searching for Scarb projects. If no paths are provided, the default contracts directory is traversed.\n\nEach project must be a valid Scarb project with lib.cairo and Scarb.toml in its root. The toml file must have `sierra` and `casm` set to `true` under `[[target.starknet-contract]]`. If you know what you are doing, you can skip the validation by providing `--skip-validate`.\n\nIn code, load the generated contracts with an underscore-separated string:\n\n```typescript\nstarknet.getContractFactory(\"<PACKAGE_NAME>_<CONTRACT_NAME>\");\n```\n\nE.g. if your toml specifies `name = MyPackage` and there is a contract called FooContract in your source files, you would load it with:\n\n```typescript\n// alternatively prepend the directory name to avoid ambiguity, but be sure to apply the underscore syntax\nstarknet.getContractFactory(\"MyPackage_FooContract\");\n```\n\nThe name of the file where the contract was defined doesn't play a role.\n\nThe plugin doesn't have a default Scarb command yet. You need to provide a `scarbCommand` (either an exact command or the path to it) under `starknet` in your hardhat config file, or you can override that via `--scarb-command <COMMAND>`.\n\n### `starknet-verify`\n\n```\n$ npx hardhat starknet-verify [--starknet-network <NAME>] [--path <PATH>] [<DEPENDENCY_PATH> ...] [--address <CONTRACT_ADDRESS>] [--compiler-version <COMPILER_VERSION>] [--license <LICENSE_SCHEME>] [--contract-name <CONTRACT_NAME>] [--account-contract]\n```\n\nQueries [Voyager](https://voyager.online/) to [verify the contract](https://voyager.online/verifyContract) deployed at `<CONTRACT_ADDRESS>` using the source files at `<PATH>` and any number of `<DEPENDENCY_PATH>`.\n\nLike in the previous command, this plugin relies on `--starknet-network`, but will default to 'alphaGoerli' network in case this parameter is not passed.\n\nThe verifier expects `<COMPILER_VERSION>` to be passed on request. Supported compiler versions are listed [here](https://voyager.online/verifyContract) in the dropdown menu.\n\nWe pass `--account-contract` to tell the verifier that the contract is of type account.\n\nFor `<LICENSE_SCHEME>` the command takes [_No License (None)_](https://github.com/github/choosealicense.com/blob/a40ef42140d137770161addf4fefc715709d8ccd/no-permission.md) as default license scheme. [Here](https://goerli.voyager.online/cairo-licenses) is a list of available options.\n\n### `starknet-plugin-version`\n\n```\n$ npx hardhat starknet-plugin-version\n```\n\nPrints the version of the plugin.\n\n### `run`\n\nUsing `--starknet-network` with `hardhat run` currently does not have effect. Use the `network` property of the `starknet` object in your hardhat config file.\n\n### `amarna`\n\n```sh\n$ npx hardhat amarna\n```\n\nRuns [Amarna](https://github.com/crytic/amarna), the static-analyzer and linter for Cairo, in a Docker container. The output from amarna goes in `out.sarif` file.\nUse flag `--script` to run custom `./amarna.sh` file to use Amarna with custom rules and args.\n\nYou need to have Docker installed and running to use `hardhat amarna`.\n\n### `test`\n\nIntroduces the `--starknet-network` option to the existing `hardhat test` task.\n\n## API\n\nAdding this plugin to your project expands Hardhat's runtime with a `starknet` object. It can be imported with:\n\n```typescript\nimport { starknet } from \"hardhat\";\n// or\nconst starknet = require(\"hardhat\").starknet;\n```\n\nTo see all the utilities introduced by the `starknet` object, check [this](https://github.com/0xSpaceShard/starknet-hardhat-plugin/blob/master/src/types/starknet.ts) out.\n\n## Testing\n\nRelying on the above described API makes it easier to interact with your contracts and test them.\n\nTo test Starknet contracts with Mocha, use the regular Hardhat `test` task which expects test files in your designated test directory:\n\n```\n$ npx hardhat test\n```\n\nRead more about the network used in tests in the [Runtime network](#runtime-network) section.\nThese examples are inspired by the official [Starknet Python tutorial](https://www.cairo-lang.org/docs/hello_starknet/unit_tests.html).\n\n### Important notes\n\n-   `BigInt` is used because `felt` may be too big for javascript. Use it like `BigInt(\"10\")` or, since ES2020, like `10n`.\n-   All function names, argument names and return value names should be referred to by the names specified in contract source files.\n-   The argument of `getContractFactory` is the **name** or the **path** of the source of the target contract:\n    -   if providing a path, it should be relative to the project root or the contracts directory:\n        -   `getContractFactory(\"contracts/subdir/MyContract.cairo\")`\n        -   `getContractFactory(\"subdir/MyContract.cairo\")`\n    -   the extension can be omitted:\n        -   `getContractFactory(\"subdir/MyContract\")`\n        -   `getContractFactory(\"MyContract\")`\n-   Nested arrays are currently not supported (eg. `core::array::Array::<core::array::Array<felt252>>`)\n\n### Test examples\n\n#### Setup\n\n```typescript\nimport { expect } from \"chai\";\nimport { starknet } from \"hardhat\";\n// or\nconst expect = require(\"chai\").expect;\nconst starknet = require(\"hardhat\").starknet;\n\ndescribe(\"My Test\", function () {\n  this.timeout(...);  // Recommended to use a big value if interacting with Alpha Goerli\n```\n\n#### Deploy / load contract\n\n```typescript\n  /**\n   * Assumes there is a file MyContract.cairo whose compilation artifacts have been generated.\n   * The contract is assumed to have:\n   * - constructor function constructor(initial_balance: felt)\n   * - external function increase_balance(amount: felt) -> (res: felt)\n   * - view function get_balance() -> (res: felt)\n   */\n  it(\"should load a previously deployed contract\", async function () {\n    const contractFactory = await starknet.getContractFactory(\"MyContract\");\n    const contract = contractFactory.getContractAt(\"0x123...\"); // address of a previously deployed contract\n  });\n\n  it(\"should declare class and deploy\", async function() {\n    // not compatible with accounts deployed with Starknet CLI\n    const account = await starknet.OpenZeppelinAccount.getAccountFromAddress(...);\n    const contractFactory = await starknet.getContractFactory(\"MyContract\");\n    // will call declare version 2 if contract is cairo 1\n    const txHash = await account.declare(contractFactory);  // class declaration\n    const classHash = await contractFactory.getClassHash();\n\n    const constructorArgs = { initial_balance: 0 };\n    const options = { maxFee: ... };\n    // implicitly invokes UDC\n    const contract = await account.deploy(contractFactory, constructorArgs, options);\n  });\n```\n\n#### Arrays\n\n```typescript\n/**\n * The contract is assumed to have:\n * - view function sum_array(a_len: felt, a: felt*) -> (res: felt)\n */\nit(\"should work with arrays\", async function () {\n    const contract = ...;\n    // you don't have to specify the array length separately\n    const { res } = await contract.call(\"sum_array\", { a: [1, 2, 3] });\n    expect(res).to.deep.equal(BigInt(6));\n});\n```\n\n#### Tuples\n\n```typescript\n/**\n * The contract is assumed to have:\n * - view function sum_pair(pair: (felt, felt)) -> (res : felt)\n * - view func sum_named_pair(pair : (x : felt, y : felt) -> (res : felt)\n * - using PairAlias = (x : felt, y : felt)\n * - view func sum_type_alias(pair : PairAlias) -> (res : felt)\n */\nit(\"should work with tuples\", async function () {\n    const contract = ...;\n    // notice how the pair tuple is passed as javascript array\n    const { res } = await contract.call(\"sum_pair\", { pair: [10, 20] });\n    ... = await contract.call(\"sum_named_pair\", { pair: { x: 10, y: 20 } });\n    ... = await contract.call(\"sum_type_alias\", { pair: { x: 10, y: 20 } });\n    expect(res).to.deep.equal(BigInt(30));\n});\n```\n\n#### Fee estimation\n\n```typescript\nit(\"should estimate fee\", async function () {\n    const account = await starknet.OpenZeppelinAccount.createAccount({\n        salt: \"0x42\",\n        privateKey: OZ_ACCOUNT_PRIVATE_KEY\n    });\n\n    const estimatedFee = await account.estimateDeployAccountFee();\n    await account.deployAccount(); // computes max fee implicitly\n\n    // Every fee estimation returns an object with gas information\n\n    const contractFactory = await starknet.getContractFactory(\"contract\");\n    const declareFee = await account.estimateDeclareFee(contractFactory);\n    await account.declare(contractFactory); // computes max fee implicitly\n\n    const deployFee = await account.estimateDeployFee(contractFactory);\n    const contract = await account.deploy(contractFactory); // computes max fee implicitly\n\n    const invokeFee = await account.estimateFee(contract, \"method\", { arg1: 10n });\n    await account.invoke(contract, \"method\", { arg1: 10n }); // computes max fee implicitly\n\n    // computes message estimate fee\n    const estimatedMessageFee = await l2contract.estimateMessageFee(\"deposit\", {\n        from_address: L1_CONTRACT_ADDRESS,\n        amount: 123,\n        user: 1\n    });\n});\n```\n\n#### Delegate Proxy\n\n```typescript\nit(\"should forward to the implementation contract\", async function () {\n    const implementationFactory = await starknet.getContractFactory(\"contract\");\n    const account = ...;\n    const txHash = await account.declare(implementationFactory);\n    const implementationClassHash = await implementationFactory.getClassHash();\n\n    const proxyFactory = await starknet.getContractFactory(\"delegate_proxy\");\n    await account.declare(proxyFactory);\n    const proxy = await account.deploy(proxyFactory, {\n        implementation_hash_: implementationClassHash\n    });\n\n    proxy.setImplementation(implementationFactory);\n    const { res: initialProxyBalance } = await proxy.call(\"get_balance\");\n});\n```\n\n#### Transaction information and receipt with events\n\n```typescript\nit(\"should return transaction data and transaction receipt\", async function () {\n    const contract: StarknetContract = ...;\n    console.log(\"Deployment transaction hash:\", contract.deployTxHash);\n\n    const transaction = await starknet.getTransaction(contract.deployTxHash);\n    console.log(transaction);\n\n    const account = ...;\n    const txHash = await account.invoke(contract, \"increase_balance\", { amount: 10 });\n\n    const receipt = await starknet.getTransactionReceipt(txHash);\n    const decodedEvents = contract.decodeEvents(receipt.events);\n\n    const txTrace = await starknet.getTransactionTrace(txHash);\n    // decodedEvents contains hex data array converted to a structured object\n    // { name: \"increase_balance_called\", data: { current_balance: 0n, amount: 10n } }\n});\n```\n\nFor more usage examples, including tuple, array and struct support check [sample-test.ts](https://github.com/0xSpaceShard/starknet-hardhat-example/blob/master/test/sample-test.ts) of [starknet-hardhat-example](https://github.com/0xSpaceShard/starknet-hardhat-example).\n\n### Devnet examples\n\n#### L1-L2 communication (Postman message exchange with Devnet)\n\nExchanging messages between L1 ([Ganache](https://www.npmjs.com/package/ganache), [Hardhat node](https://hardhat.org/hardhat-network/#running-stand-alone-in-order-to-support-wallets-and-other-software), Ethereum testnet) and L2 (only supported for [starknet-devnet](https://github.com/0xSpaceShard/starknet-devnet)) can be done using this plugin:\n\n-   Ensure there is an available L1 network and that you know its RPC endpoint URL.\n-   Load an L1 Messaging contract using `starknet.devnet.loadL1MessagingContract`.\n-   Call `starknet.devnet.flush` after you `invoke` your contract and want to propagate your message.\n-   When running a hardhat test or script which relies on `network[\"config\"]`, specify the name of an L1 network you defined in `hardhat.config`. Use `npx hardhat test --network <NETWORK_NAME>`. Network `localhost` is predefined in hardhat so `--network localhost` should work if you're using e.g. `npx hardhat node` as the L1 network.\n-   Check [this example](https://github.com/0xSpaceShard/starknet-hardhat-example/blob/master/test/postman.test.ts#L98) for more info.\n\n```typescript\n  it(\"should exchange messages with Devnet\", async function() {\n    await starknet.devnet.loadL1MessagingContract(...);\n\n    // Exact syntax may vary depending on your L1 contract interaction library\n    const l1contract = ...;\n    const l2contract = ...;\n\n    // If the L1 function is expected to send a message to L2,\n    // it needs to be paid for by providing some value to the transaction\n    await l1contract.send(..., {\n        value: 1000 // pay for L1->L2 message\n    });\n    await starknet.devnet.flush();\n\n    const account = ...;\n    await account.invoke(l2contract, ...);\n    await starknet.devnet.flush();\n  });\n```\n\n#### Mock message between L1 and L2\n\nTo send mock messages between L1 and L2 the following two functions can be used. Detailed example can be found [here](https://github.com/0xSpaceShard/starknet-hardhat-example/blob/master/test/postman.test.ts#170).\n\n```typescript\nstarknet.devnet.sendMessageToL2(...); // Sends message to L2\nstarknet.devnet.consumeMessageFromL2(...); // Sends message from L2 to L1\n```\n\n#### Restart\n\nDevnet can be restarted by calling `starknet.devnet.restart()`. All of the deployed contracts, blocks and storage updates will be restarted to the empty state.\n\n```typescript\nawait starknet.devnet.restart();\n```\n\n#### Dumping\n\nUse `starknet.devnet.dump()` to maintain the Devnet instance from the plugin.\n\n```typescript\nawait starknet.devnet.dump(path); // path to dump file (eg. dump.pkl)\n```\n\n#### Loading\n\nDumped Devnet instance can be loaded using `starknet.devnet.load()`.\n\n```typescript\nawait starknet.devnet.load(path); // path for dump file (eg. dump.pkl)\n```\n\n#### Advancing time\n\nThe plugin comes with support for [Devnet's timestamp management](https://0xspaceshard.github.io/starknet-devnet/docs/guide/advancing-time).\nThe time offset for each generated block can be increased by calling `starknet.devnet.increaseTime()`. The time for the next block can be set by calling `starknet.devnet.setTime()`, with subsequent blocks keeping the set offset.\n\nWarning: _block time can be set in the past and lead to unexpected behaviour!_\n\n```typescript\nawait starknet.devnet.setTime(1000); // time in seconds\nawait starknet.devnet.increaseTime(1000); // time in seconds\n```\n\n#### Creating an empty block\n\nDevnet offers [empty block creation](https://0xspaceshard.github.io/starknet-devnet/docs/guide/blocks#create-an-empty-block). It can be useful to make available those changes that take effect with the next block.\n\n```typescript\nconst emptyBlock = await starknet.devnet.createBlock();\n```\n\n#### Mint tokens to an account\n\nDevnet allows [minting token](https://0xspaceshard.github.io/starknet-devnet/docs/guide/mint-token#mint-with-a-transaction). You can call `starknet.devnet.mint` like this\n\n```typescript\nconst lite_mode = true; // Optional, Default true\nawait starknet.devnet.mint(account_address, 2e12, lite_mode);\n```\n\n## Debugging contracts\n\nTo debug Starknet contracts, you can use `print()` in cairo hints in your contract, and the printed lines will appear in Devnet's log.\n\nCompile with `--disable-hint-validation` flag to allow hints.\n\n```\nhardhat starknet-compile-deprecated --disable-hint-validation\n```\n\nFor example, when calling the following `increase_balance` with input `25`.\n\n```cairo\n@external\nfunc increase_balance{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}(\n    amount: felt\n) {\n    let (res) = balance.read();\n    %{ print( \"Adding balance...\" ) %}\n    %{ print( ids.res ) %}\n    balance.write(res + amount);\n    let (afterUpdate) = balance.read();\n    %{ print( ids.afterUpdate ) %}\n    return ();\n}\n```\n\nDevnet logs look like this,\n\n```\nAdding balance...\n0\n25\n```\n\nIf you want to have your debug lines printed in the same terminal as your hardhat script/test, use `integrated-devnet` with `stdout` set to `\"STDOUT\"` as documented in [runtime network](#runtime-network---integrated-devnet) section.\n\n## Configure the plugin\n\nSpecify custom configuration by editing your project's `hardhat.config.ts` (or `hardhat.config.js`).\n\n### Cairo 0 compilation\n\nCairo 0 compilation is by default done using the latest stable Dockerized compiler. If you want to use an older Cairo 0 compiler, specify the full semver string ([available versions](https://hub.docker.com/r/shardlabs/cairo-cli/tags)):\n\n```javascript\nmodule.exports = {\n  starknet: {\n    // Docker image tailored to the machine is pulled. If not applied, the `-arm` suffix is applied to the version name if on an arm64 machine.\n    dockerizedVersion: \"0.11.2\"\n  }\n  ...\n};\n```\n\nIf you cannot use Docker (e.g. on Mac), you'll need to have the `cairo-lang` Python package installed locally and `python3` command runnable. Use one of the following:\n\n```typescript\nmodule.exports = {\n    starknet: {\n        // venv: \"active\" <- for the active virtual environment or global environment\n        // venv: \"path/to/my-venv\" <- for env created with e.g. `python -m venv path/to/my-venv`\n        // Python virtual environment can be created with: pyenv, poetry, conda, miniconda, ...\n        venv: \"<VENV_PATH>\"\n    }\n};\n```\n\n### Building Cairo 1 projects\n\nThis plugin comes with a Scarb wrapper. Read about how to use it in [this section](#starknet-build). If not via CLI, you may specify the Scarb command via:\n\n```typescript\nmodule.exports = {\n    starknet: {\n        scarbCommand: \"scarb\" // or alternatively an exact path to the desired command\n    }\n};\n```\n\n### Request Timeout\n\nDefault requestTimeout is 30s. It can be changed using the following configuration.\nYou may need to increase the timeout value in some situation (declaring large smart contract).\n\n```typescript\nmodule.exports = {\n    starknet: {\n        requestTimeout: 90_000 // 90s\n    }\n};\n```\n\n### Paths\n\nPrefer providing absolute paths when using the plugin. If a relative path is provided, it will be resolved relative to the root of the project.\n\n```typescript\nmodule.exports = {\n  paths: {\n    // Defaults to \"contracts\" (the same as `paths.sources`).\n    starknetSources: \"my-own-starknet-path\",\n\n    // Defaults to \"starknet-artifacts\".\n    // Has to be different from the value set in `paths.artifacts` (which is used by core Hardhat and has a default value of `artifacts`).\n    starknetArtifacts: \"also-my-own-starknet-path\",\n\n   // Same purpose as the `--cairo-path` argument of the `starknet-compile-deprecated` command\n   // Allows specifying the locations of imported files, if necessary.\n    cairoPaths: [\"my/own/cairo-path1\", \"also/my/own/cairo-path2\"]\n  }\n  ...\n};\n```\n\n### Runtime network\n\nTo set the network used in your Hardhat scripts/tests, use `starknet[\"network\"]` or the `--starknet-network` CLI option. Not specifying one will default to using alpha-goerli. Do not confuse this network with Hardhat's default `--network` option which refers to the L1 network.\n\nA faster approach is to use [starknet-devnet](https://github.com/0xSpaceShard/starknet-devnet), a Ganache-like local testnet.\n\n```javascript\nmodule.exports = {\n  starknet: {\n    network: \"myNetwork\"\n  },\n  networks: {\n    devnet: { // this way you can also specify it with `--starknet-network devnet`\n      url: \"http://127.0.0.1:5050\"\n    }\n  }\n  ...\n};\n```\n\nPredefined networks include `alpha-goerli`, `alpha-goerli2`, `alpha-mainnet` and `integrated-devnet`.\n\n### Runtime network - Integrated Devnet\n\n[starknet-devnet](https://github.com/0xSpaceShard/starknet-devnet) is available out of the box as a starknet network called `integrated-devnet`. By default, it will spawn Devnet using its Docker image and listening on `http://127.0.0.1:5050`. Target it via the hardhat config file or `--starknet-network integrated-devnet`. Using `integrated-devnet` makes [forking of existing blockchains](https://0xspaceshard.github.io/starknet-devnet/docs/guide/fork/) very easy.\n\nBy defining/modifying `networks[\"integratedDevnet\"]` in your hardhat config file, you can specify:\n\n-   the version of dockerized Devnet to use\n-   a Python environment with installed starknet-devnet (can be active environment); this will avoid using the dockerized version\n-   CLI arguments to be used on Devnet startup: [options](https://0xspaceshard.github.io/starknet-devnet/docs/guide/run)\n-   where output should be flushed _(either to the terminal or to a file)_.\n\n#### Dockerized Integrated Devnet\n\nDockerized integrated-devnet is the default mode, but can be specified via the `dockerizedVersion` property of `integratedDevnet`:\n\n-   the full image can be provided:\n    -   `shardlabs/starknet-devnet:<TAG>` (Pythonic Devnet) - [Docker image info](https://0xspaceshard.github.io/starknet-devnet/docs/guide/run/#run-with-docker)\n    -   `shardlabs/starknet-devnet-rs:<TAG>` (Rust Devnet) - [Docker image info](https://github.com/0xSpaceShard/starknet-devnet-rs#run-with-docker)\n-   if just `<TAG>` is provided, it defaults to Pythonic Devnet\n\n#### Integrated Devnet config example\n\n```javascript\nmodule.exports = {\n  starknet: {\n    network: \"integrated-devnet\"\n  },\n  networks: {\n    integratedDevnet: {\n      url: \"http://127.0.0.1:5050\",\n\n      // venv: \"active\" <- for the active virtual environment with installed starknet-devnet\n      // venv: \"path/to/venv\" <- for env with installed starknet-devnet (created with e.g. `python -m venv path/to/venv`)\n      venv: \"<VENV_PATH>\",\n\n      // This section covers the VM selection in Pythonic Devnet (starknet-devnet): Python VM or Rust VM\n      // This is distinct from selecting between Pythonic Devnet and Rust Devnet, which can be done via `dockerizedVersion`\n      // vmLang: \"python\" <- use python vm (default value)\n      // vmLang: \"rust\" <- use rust vm\n      // (rust vm is available out of the box using dockerized integrated-devnet)\n      // (rustc and cairo-rs-py required using installed devnet)\n      // read more here : https://0xspaceshard.github.io/starknet-devnet/docs/guide/run/#run-with-the-rust-implementation-of-cairo-vm\n      vmLang: \"<VM_LANG>\",\n\n      // or use dockerized Devnet by specifying [IMAGE:]<TAG> (if IMAGE omitted - defaults to \"shardlabs/starknet-devnet\")\n      dockerizedVersion: \"<DEVNET_VERSION>\",\n      // dockerizedVersion: \"shardlabs/starknet-devnet:<TAG>\",\n      // dockerizedVersion: \"shardlabs/starknet-devnet-rs:<TAG>\",\n\n      // optional devnet CLI arguments, read more here: https://0xspaceshard.github.io/starknet-devnet/docs/guide/run\n      args: [\"--gas-price\", \"2000000000\", \"--fork-network\", \"alpha-goerli\"],\n\n      // stdout: \"logs/stdout.log\" <- dumps stdout to the file\n      stdout: \"STDOUT\", // <- logs stdout to the terminal\n      // stderr: \"logs/stderr.log\" <- dumps stderr to the file\n      stderr: \"STDERR\"  // <- logs stderr to the terminal\n    }\n  }\n  ...\n};\n```\n\n### Installing third-party libraries\n\nIf you want to install a third-party Cairo library and be able to import it in your Cairo files, use the following pattern:\n\n#### With npm packages:\n\n1. Install (example package: `influenceth__cairo_math_64x61@npm:@influenceth/cairo-math-64x61`)\n\n```\nnpm install --save-dev influenceth__cairo_math_64x61@npm:@influenceth/cairo-math-64x61\n```\n\n2. Edit the `paths.cairoPaths` section of your `hardhat.config` file ([docs](#paths)):\n\n```typescript\npaths: {\n    cairoPaths: [\"./node_modules\"];\n}\n```\n\n3. Import\n\n```\nfrom influenceth__cairo_math_64x61.contracts.Math64x61 import Math64x61_ONE, Math64x61_mul\n```\n\n#### With pip packages:\n\n1. Install (example package: `openzeppelin-cairo-contracts`)\n\n```\npip install openzeppelin-cairo-contracts\n```\n\n2. If you are installing in a virtual environment, edit the `paths.cairoPaths` section of your `hardhat.config` file ([docs](#paths)) as:\n\n```typescript\npaths: {\n    // this directory contains the openzeppelin directory\n    cairoPaths: [\"path/to/cairo_venv/lib/python3.9/site-packages\"],\n}\n```\n\n3. Import\n\n```\nfrom openzeppelin.token.erc20.library import ERC20\n```\n\n#### With non-npm git repositories:\n\nIf you want to install directly from a git repo that doesn't contain `package.json`, you cannot use `npm i`. However, `yarn` supports this.\n\n1. Install (example package: `https://github.com/OpenZeppelin/cairo-contracts`)\n\n```\nyarn add openzeppelin__cairo_contracts@git+https://git@github.com/OpenZeppelin/cairo-contracts.git\n```\n\n### Using `starknet.getContractFactory` with third-party libraries\n\nThis paragraph assumes you've read and run [3rd party library installation](#Installing-third-party-libraries).\nThe example package used is `https://github.com/OpenZeppelin/cairo-contracts` so you may want to check [non-npm git repos](#With-non-npm-git-repositories).\n\n1. Compile\n\n```\n$ npx hardhat starknet-compile-deprecated node_modules/openzeppelin__cairo_contracts/src/openzeppelin/token/erc20/presets/ERC20.cairo\n```\n\n2. Get contract factory\n\n```typescript\nconst contractFactory = await starknet.getContractFactory(\n    \"node_modules/openzeppelin__cairo_contracts/src/openzeppelin/token/erc20/presets/ERC20\"\n);\n```\n\n## Recompilation\n\nRecompilation is performed when contracts are updated or when artifacts are missing. A file will be created with the name `cairo-files-cache.json` to handle caching. Recompilation is handled before the following [CLI commands](#cli-commands) are executed.\n\nThis feature is **only** guaranteed to work with Cairo 0 contracts.\n\n-   `npx hardhat run`\n-   `npx hardhat test`\n\nThis feature is turned off by default and is specified in the `hardhat.config.ts` file.\n\n```typescript\nmodule.exports = {\n    starknet: {\n        recompile: true // <- to switch recompilation on\n    }\n};\n```\n\n## Account\n\nIn Starknet, an account is a contract through which you interact with other contracts.\nIts usage is exemplified [earlier in the docs](#accounts) and [in the example repo](https://github.com/0xSpaceShard/starknet-hardhat-example/blob/plugin/test/oz-account-test.ts).\n\nThere are several Starknet account implementations; this plugin supports the following as properties of `hre.starknet`:\n\n-   `OpenZeppelinAccount` - [v0.5.1](https://github.com/OpenZeppelin/cairo-contracts/releases/tag/v0.5.1)\n-   `ArgentAccount` - Commit [780760e](https://github.com/argentlabs/argent-contracts-starknet/tree/780760e4156afe592bb1feff7e769cf279ae9831) of branch develop.\n\n### Create account\n\n```typescript\nimport { starknet } from \"hardhat\";\nconst account = await starknet.OpenZeppelinAccount.createAccount();\nconst accountFromOptions = await starknet.OpenZeppelinAccount.createAccount({\n    salt: \"0x123\", // salt to always deploy to an expected address\n    privateKey: process.env.MY_KEY // the key only known to you, the public key will be inferred\n});\nconsole.log(account.address);\n```\n\n### Fund account\n\nAfter creating the account, you need to fund it (give it some ETH):\n\n-   On alpha-goerli use [this faucet](https://faucet.goerli.starknet.io/).\n-   On alpha-goerli2 use [this](https://www.newton.so/view/636d020159c30b8efc8d1d86)\n-   On starknet-devnet call [`starknet.devnet.mint()`](#mint-tokens-to-an-account) which uses [devnet faucet](https://0xspaceshard.github.io/starknet-devnet/docs/guide/mint-token/).\n-   Alternatively transfer some amount from an already funded account to the newly deployed account.\n\nIf you're facing issues loading the account you've just funded, check out [this issue](https://github.com/0xSpaceShard/starknet-hardhat-plugin/issues/281#issuecomment-1354588817).\n\n### Get balance\n\nTo find out the balance of your account on the current Starknet network, you can use `starknet.getBalance`:\n\n```typescript\nimport { starknet } from \"hardhat\";\nconst someBalance = starknet.getBalance(\"0x123...def\")\nconst myAccount = ...;\nconst myAccountBalance = starknet.getBalance(myAccount.address);\n```\n\n### Deploy account\n\nAfter funding the account, you need to deploy it (in case of `ArgentAccount`, this will also take care of initialization):\n\n```typescript\nawait account.deployAccount({ maxFee: ... });\n```\n\nAlternatively deploy your account by running [this script](https://github.com/0xSpaceShard/starknet-hardhat-example/blob/master/scripts/deploy-account.ts).\n\nTo successfully deploy `ArgentAccount`, the chain you are interacting with is expected to have `ArgentAccount` contracts declared. Alpha Goerli and Alpha Mainnet satisfy this criterion, but if you're working with Devnet, this is most easily achievable by running Devnet [forked](https://0xspaceshard.github.io/starknet-devnet/docs/guide/fork) from e.g. Alpha Goerli.\n\n### Reuse account\n\nTo retrieve an already deployed Account, use the `getAccountFromAddress` method. Do not use this method for accounts deployed by e.g. Starknet CLI (those are modified OZ accounts that are not compatible with the OZ version supported by this plugin). What may be especially useful are [predeployed+predefined accounts](https://0xspaceshard.github.io/starknet-devnet/docs/guide/Predeployed-accounts) that come with Devnet (retrieve them with `starknet.devnet.getPredeployedAccounts()`).\n\n```typescript\nconst account = await starknet.OpenZeppelinAccount.getAccountFromAddress(\n    accountAddress,\n    process.env.PRIVATE_KEY\n);\n```\n\n### Interact through account\n\nUse the `invoke` method of `Account` to invoke (change the state), but `call` method of `StarknetContract` to call (read the state).\n\n```typescript\nawait account.invoke(contract, \"increase_balance\", { amount });\nconst { res: amount } = await contract.call(\"get_balance\");\n```\n\nOnce your account is funded and deployed, you can specify a max fee greater than zero:\n\n```typescript\nawait account.invoke(contract, \"foo\", { arg1: ... }, { maxFee: BigInt(...) });\n```\n\nIf you don't specify a `maxFee`, one will be calculated for you by applying an overhead of 50% to the result of fee estimation. You can also customize the overhead by providing a value for `overhead`:\n\n```typescript\n// maxFee will be 40% of estimated fee; if overhead not provided, the default value is used.\nawait account.invoke(contract, \"foo\", { arg1: ... }, { overhead: 0.4 });\n```\n\nSet the `rawInput` option to `true` to suppress validation of the args passed to the contract function:\n\n```typescript\n// pass a direct array\nawait account.invoke(contract, \"foo\", [\"10\", \"20\"], { rawInput: true });\nawait contract.call(\"bar\", [\"30\", \"40\"], { rawInput: true });\n```\n\n### Multicalls\n\nYou can also use the Account object to perform multi{invokes, fee estimations}.\n\n```typescript\nconst interactionArray = [\n    {\n        toContract: contract1,\n        functionName: \"increase_balance\",\n        calldata: { amount: 10n }\n    },\n    {\n        toContract: contract2,\n        functionName: \"increase_balance\",\n        calldata: { amount: 20n }\n    }\n];\nconst fee = await account.multiEstimateFee(interactionArray);\nconst txHash = await account.multiInvoke(interactionArray);\n```\n\n### Guardian\n\nUnlike OpenZeppelin account, Argent account offers [guardian functionality](https://support.argent.xyz/hc/en-us/articles/360022631992-About-guardians). The guardian is by default not set (the guardian key is undefined), but if you want to change it, cast the `account` to `ArgentAccount` and execute `setGuardian`.\n\n```typescript\nawait argentAccount.setGuardian(process.env.GUARDIAN_PRIVATE_KEY, { maxFee: 1e18 });\n// to unset it, use an undefined key\nawait argentAccount.setGuardian(undefined, { maxFee: 1e18 });\n```\n\n## More examples\n\nAn example Hardhat project using this plugin can be found [here](https://github.com/0xSpaceShard/starknet-hardhat-example).\n"
  },
  {
    "path": "www/docusaurus.config.js",
    "content": "// @ts-check\n// Note: type annotations allow type checking and IDEs autocompletion\n\nconst lightCodeTheme = require(\"prism-react-renderer/themes/github\");\nconst darkCodeTheme = require(\"prism-react-renderer/themes/dracula\");\n\n/** @type {import('@docusaurus/types').Config} */\nconst config = {\n    title: \"Starknet Hardhat Plugin\",\n    tagline: \"A plugin for integrating Starknet tools into Hardhat projects\",\n    url: \"https://0xspaceshard.github.io\",\n    // baseUrl: \"/\",\n    baseUrl: \"/starknet-hardhat-plugin/\",\n    onBrokenLinks: \"throw\",\n\n    onBrokenMarkdownLinks: \"warn\",\n    favicon: \"img/logo.svg\",\n    // GitHub pages deployment config.\n    // If you aren't using GitHub pages, you don't need these.\n    organizationName: \"0xSpaceShard\", // Usually your GitHub org/user name.\n    projectName: \"starknet-hardhat-plugin\", // Usually your repo name.\n\n    // Even if you don't use internalization, you can use this field to set useful\n    // metadata like html lang. For example, if your site is Chinese, you may want\n    // to replace \"en\" with \"zh-Hans\".\n    i18n: {\n        defaultLocale: \"en\",\n        locales: [\"en\"]\n    },\n\n    presets: [\n        [\n            \"classic\",\n            /** @type {import('@docusaurus/preset-classic').Options} */\n            ({\n                docs: {\n                    sidebarPath: require.resolve(\"./sidebars.js\"),\n                    editUrl:\n                        \"https://github.com/0xSpaceShard/starknet-hardhat-plugin/tree/master/docs\"\n                },\n                blog: {\n                    showReadingTime: true,\n                    // Please change this to your repo.\n                    // Remove this to remove the \"edit this page\" links.\n                    editUrl:\n                        \"https://github.com/0xSpaceShard/starknet-hardhat-plugin/tree/master/docs\"\n                },\n                theme: {\n                    customCss: require.resolve(\"./src/css/custom.css\")\n                }\n            })\n        ]\n    ],\n\n    themeConfig:\n        /** @type {import('@docusaurus/preset-classic').ThemeConfig} */\n        ({\n            navbar: {\n                title: \"Starknet Hardhat Plugin\",\n                logo: {\n                    alt: \"Starknet Hardhat Plugin Logo\",\n                    src: \"img/logo.svg\"\n                },\n                items: [\n                    {\n                        type: \"doc\",\n                        docId: \"intro\",\n                        position: \"left\",\n                        label: \"Intro\"\n                    },\n                    {\n                        type: \"doc\",\n                        docId: \"dev\",\n                        position: \"left\",\n                        label: \"Dev\"\n                    },\n                    {\n                        href: \"https://github.com/0xSpaceShard/starknet-hardhat-plugin\",\n                        label: \"GitHub\",\n                        position: \"right\"\n                    }\n                ]\n            },\n            footer: {\n                style: \"dark\",\n                links: [\n                    {\n                        title: \"Docs\",\n                        items: [\n                            {\n                                label: \"Intro\",\n                                to: \"/docs/intro\"\n                            },\n                            {\n                                label: \"Starknet Hardhat example\",\n                                href: \"https://github.com/0xSpaceShard/starknet-hardhat-example\"\n                            }\n                        ]\n                    },\n                    {\n                        title: \"Community\",\n                        items: [\n                            {\n                                label: \"Twitter\",\n                                href: \"https://twitter.com/0xSpaceShard\"\n                            }\n                        ]\n                    },\n                    {\n                        title: \"More\",\n                        items: [\n                            {\n                                label: \"GitHub\",\n                                href: \"https://github.com/0xSpaceShard/starknet-hardhat-plugin\"\n                            }\n                        ]\n                    }\n                ],\n                copyright: `Copyright © ${new Date().getFullYear()} SpaceShard`\n            },\n            prism: {\n                theme: lightCodeTheme,\n                darkTheme: darkCodeTheme\n            }\n        })\n};\n\nmodule.exports = config;\n"
  },
  {
    "path": "www/package.json",
    "content": "{\n    \"name\": \"docusaurus\",\n    \"version\": \"0.0.0\",\n    \"private\": true,\n    \"scripts\": {\n        \"docusaurus\": \"docusaurus\",\n        \"start\": \"docusaurus start\",\n        \"build\": \"docusaurus build\",\n        \"swizzle\": \"docusaurus swizzle\",\n        \"deploy\": \"docusaurus deploy\",\n        \"clear\": \"docusaurus clear\",\n        \"serve\": \"docusaurus serve\",\n        \"write-translations\": \"docusaurus write-translations\",\n        \"write-heading-ids\": \"docusaurus write-heading-ids\"\n    },\n    \"dependencies\": {\n        \"@docusaurus/core\": \"2.2.0\",\n        \"@docusaurus/preset-classic\": \"2.2.0\",\n        \"@mdx-js/react\": \"^1.6.22\",\n        \"clsx\": \"^1.2.1\",\n        \"prism-react-renderer\": \"^1.3.5\",\n        \"react\": \"^17.0.2\",\n        \"react-dom\": \"^17.0.2\"\n    },\n    \"devDependencies\": {\n        \"@docusaurus/module-type-aliases\": \"2.2.0\"\n    },\n    \"browserslist\": {\n        \"production\": [\n            \">0.5%\",\n            \"not dead\",\n            \"not op_mini all\"\n        ],\n        \"development\": [\n            \"last 1 chrome version\",\n            \"last 1 firefox version\",\n            \"last 1 safari version\"\n        ]\n    },\n    \"engines\": {\n        \"node\": \">=16.14\"\n    }\n}\n"
  },
  {
    "path": "www/sidebars.js",
    "content": "/**\n * Creating a sidebar enables you to:\n - create an ordered group of docs\n - render a sidebar for each doc of that group\n - provide next/previous navigation\n\n The sidebars can be generated from the filesystem, or explicitly defined here.\n\n Create as many sidebars as you want.\n */\n\n// @ts-check\n\n/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */\nconst sidebars = {\n    // By default, Docusaurus generates a sidebar from the docs folder structure\n    // tutorialSidebar: [{ type: \"autogenerated\", dirName: \".\" }]\n    // But you can create a sidebar manually\n    /*\n  tutorialSidebar: [\n    'intro',\n    'hello',\n    {\n      type: 'category',\n      label: 'Tutorial',\n      items: ['tutorial-basics/create-a-document'],\n    },\n  ],\n   */\n};\n\nmodule.exports = sidebars;\n"
  },
  {
    "path": "www/src/components/HomepageFeatures/index.js",
    "content": "import React from \"react\";\nimport clsx from \"clsx\";\nimport styles from \"./styles.module.css\";\nconst FeatureList = [\n    {\n        title: \"Test with JavaScript\",\n        Svg: require(\"@site/static/img/undraw_test.svg\").default,\n        description: (\n            <>\n                Write your tests in JS. Example,\n                <pre>{\"contract.call('entrypoint', {... });\"}</pre>\n            </>\n        )\n    },\n    {\n        title: \"Test composability\",\n        Svg: require(\"@site/static/img/undraw_composability.svg\").default,\n        description: (\n            <>\n                Declare, deploy with construtor args and call to test systems composed of multiple\n                smart contracts.\n            </>\n        )\n    },\n    {\n        title: \"JavaScript/TypeScript\",\n        Svg: require(\"@site/static/img/undraw_at_home.svg\").default,\n        description: (\n            <>\n                Convenience of JS/TS and Hardhat. Check out{\" \"}\n                <a\n                    href=\"https://hardhat.org/tutorial/creating-a-new-hardhat-project.html\"\n                    rel=\"nofollow\"\n                >\n                    Setting up a Hardhat project\n                </a>\n                .\n            </>\n        )\n    }\n];\n\nfunction Feature({ Svg, title, description }) {\n    return (\n        <div className={clsx(\"col col--4\")}>\n            <div className=\"text--center background-circle\">\n                <Svg className={styles.featureSvg} role=\"img\" />\n            </div>\n            <div className=\"margin-top--md text--center padding-horiz--md\">\n                <h3>{title}</h3>\n                <p>{description}</p>\n            </div>\n        </div>\n    );\n}\n\nexport default function HomepageFeatures() {\n    return (\n        <section className={styles.features}>\n            <div className=\"container margin-vert--xl\">\n                <div className=\"row\">\n                    {FeatureList.map((props, idx) => (\n                        <Feature key={idx} {...props} />\n                    ))}\n                </div>\n            </div>\n        </section>\n    );\n}\n"
  },
  {
    "path": "www/src/components/HomepageFeatures/styles.module.css",
    "content": ".features {\n    display: flex;\n    align-items: center;\n    padding: 2rem 0;\n    width: 100%;\n}\n\n.featureSvg {\n    height: 200px;\n    width: 200px;\n}\n"
  },
  {
    "path": "www/src/css/custom.css",
    "content": "/**\n * Any CSS included here will be global. The classic template\n * bundles Infima by default. Infima is a CSS framework designed to\n * work well for content-centric websites.\n */\n\n/* You can override the default Infima variables here. */\n:root {\n    --ifm-color-custom-yellow: #cd9801;\n    --ifm-color-custom-blue: #29296e;\n    --ifm-color-primary: #29296e;\n    --ifm-color-primary-dark: #252563;\n    --ifm-color-primary-darker: #23235e;\n    --ifm-color-primary-darkest: #1d1d4d;\n    --ifm-color-primary-light: #2d2d79;\n    --ifm-color-primary-lighter: #2f2f7f;\n    --ifm-color-primary-lightest: #35358f;\n    /* --bg-circle-color: #cd9801; */\n\n    --ifm-code-font-size: 95%;\n    --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);\n    --ifm-footer-background-color: var(--ifm-color-primary-lightest);\n}\n\n/* For readability concerns, you should choose a lighter palette in dark mode. */\n[data-theme=\"dark\"] {\n    --ifm-color-primary: #cd9801;\n    --ifm-color-primary-dark: #c39001;\n    --ifm-color-primary-darker: #b98901;\n    --ifm-color-primary-darkest: #aa7e01;\n    --ifm-color-primary-light: #e2a701;\n    --ifm-color-primary-lighter: #ecaf01;\n    --ifm-color-primary-lightest: #fec00e;\n    /* --bg-circle-color: #35358f; */\n    --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);\n}\n\n.footer--dark a:hover {\n    color: var(--ifm-color-custom-yellow, #eee);\n}\n\n.background-circle {\n    position: relative;\n}\n.background-circle:before {\n    content: \"\";\n    display: block;\n    position: absolute;\n    background: var(--bg-circle-color, #f6643c);\n    border-radius: 50%;\n    transform: translate(-50%, -50%);\n    top: 50%;\n    left: 50%;\n    z-index: -1;\n    width: 209px;\n    height: 212px;\n    box-sizing: border-box;\n}\n\nh1 {\n    font-weight: 300;\n}\n\nh2 {\n    font-weight: 400;\n}\nh3,\nh4 {\n    font-weight: 500;\n}\n"
  },
  {
    "path": "www/src/pages/index.js",
    "content": "import React from \"react\";\nimport clsx from \"clsx\";\nimport Link from \"@docusaurus/Link\";\nimport useDocusaurusContext from \"@docusaurus/useDocusaurusContext\";\nimport Layout from \"@theme/Layout\";\nimport HomepageFeatures from \"@site/src/components/HomepageFeatures\";\n\nimport styles from \"./index.module.css\";\n\nfunction HomepageHeader() {\n    const { siteConfig } = useDocusaurusContext();\n    return (\n        <header className={clsx(\"hero hero--primary\", styles.heroBanner)}>\n            <div className=\"container margin-vert--lg\">\n                <img src=\"img/logo.svg\" style={{ width: \"8em\" }} />\n                <h1 className=\"hero__title margin-top--lg thin\">{siteConfig.title}</h1>\n                <p className=\"hero__subtitle margin-bottom--lg\">{siteConfig.tagline}</p>\n                <div className={styles.buttons}>\n                    <Link\n                        className=\"margin-horiz--md button button--secondary button--lg\"\n                        to=\"docs/intro#cli-commands\"\n                    >\n                        CLI commands\n                    </Link>\n\n                    <Link\n                        className=\"margin-horiz--md button button--secondary button--lg\"\n                        to=\"docs/intro#api\"\n                    >\n                        JS utilities - API\n                    </Link>\n\n                    <a\n                        className=\"margin-horiz--md button button--secondary button--lg\"\n                        href=\"https://github.com/0xSpaceShard/starknet-hardhat-example\"\n                    >\n                        Example repo\n                    </a>\n                </div>\n            </div>\n        </header>\n    );\n}\n\nexport default function Home() {\n    const { siteConfig } = useDocusaurusContext();\n    return (\n        <Layout\n            title={`Hello from ${siteConfig.title}`}\n            description=\"Description will go into a meta tag in <head />\"\n        >\n            <HomepageHeader />\n            <main>\n                <div className=\"container margin-top--xl text--center\">\n                    <h1 className=\"thin\">\n                        <strike>Ethereum</strike> Starknet Development environment for professionals\n                    </h1>\n                </div>\n                <HomepageFeatures />\n            </main>\n        </Layout>\n    );\n}\n"
  },
  {
    "path": "www/src/pages/index.module.css",
    "content": "/**\n * CSS files with the .module.css suffix will be treated as CSS modules\n * and scoped locally.\n */\n\n.heroBanner {\n    padding: 4rem 0;\n    text-align: center;\n    position: relative;\n    overflow: hidden;\n}\n\n@media screen and (max-width: 996px) {\n    .heroBanner {\n        padding: 2rem;\n    }\n}\n\n.buttons {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n"
  },
  {
    "path": "www/src/pages/markdown-page.md",
    "content": "---\ntitle: Markdown page example\n---\n\n# Markdown page example\n\nYou don't need React to write simple standalone pages.\n"
  },
  {
    "path": "www/static/.nojekyll",
    "content": ""
  }
]